del_user_97632 Inserito: 11 novembre 2019 Segnala Inserito: 11 novembre 2019 (modificato) Ciao, da un lato ho un i2c gpio expander, PCF8574, propriamente alimentato a 3,3V. Un suo gpio, settato come output, e' connesso ad un ingresso (pin 1) di un 74LVC1G86, propriamente alimentato a 5V. Sulla linea anche una resistenza 10K pull down. Mistero, togglando l'ouput, vedo i livelli basso 0 V alto a 1.0 V. Mi sarei aspettato 0 <-> 3.3V. Per altro 74LVC1G86 non lo interpretara' alto. Provando a settare alto/basso su un gpio non connesso, i livelli sono propriamente di 0 e 3,3. Pensavo che anche se il drive strength fosse configurabile, di default sti 300uA dovuti piu che altro al pull down li dovrebbe dare. Sto investigando, ma se avete idee, benvenute. Modificato: 11 novembre 2019 da _angelo_
Livio Orsini Inserita: 11 novembre 2019 Segnala Inserita: 11 novembre 2019 2 ore fa, _angelo_ ha scritto: PCF8574, propriamente alimentato a 3,3V. Già questo non mi torna, perchè con questa sigla l'alimentazione deve essere 5V, secondo il data sheet. Che poi riesca a lavorare anche con 2.5V di alimentazione è una forzatura che io non mi sentirei di utilizzare. Poi è encessario capire se è un PCF8574 o un PCF8574A, perchè c'è differenza di indirizzamento. A parte questo, se lo usi con una tensione di alimentazione che è il 66% del valore nominale devi aspettarti che il suo fan out non sia quello previsto.
del_user_97632 Inserita: 11 novembre 2019 Autore Segnala Inserita: 11 novembre 2019 (modificato) Ciao Livio, scusa, e' un pcf8574a. Vcc puo essere tra 2,5 e 6. Indirizzo a 7 bit e' 0x38, risponde. E' alimentato a 3,3 e nei gpio non connessi, livello alto e' esattamente 3,3. root@hostx:~# i2cdetect -y 5 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: UU -- -- -- -- -- -- -- (editato) Purtroppo ho scoperto una cosa. Siccome l'i2c expander e' connesso a un i2c mux, PCA9546A, e anche un altro chip connesso a llo stesso mux sta malfunzionando, ho il forte sospetto che il problema sia nel mux, e che per qualche motivo il pcf8574a non si setta propriamente come output. Ora sto decodificando i treni di dati, e mettendo qualche printk nei driver del kernel, per fortuna oscilloscopio mio li vede e ti da i dati hex in automatico. Ma qualsiasi idea benvenuta. Modificato: 11 novembre 2019 da _angelo_
Livio Orsini Inserita: 11 novembre 2019 Segnala Inserita: 11 novembre 2019 37 minuti fa, _angelo_ ha scritto: Vcc puo essere tra 2,5 e 6. Strano perchè sia Philips che TI specificano 5V <= 7V. Con quale micro fai il master? Io a volte ho avuto problemi utilizzando chip non Philips.
Ctec Inserita: 11 novembre 2019 Segnala Inserita: 11 novembre 2019 Le linee SDA e SCL hanno i corretti pull-up? Altrimenti i comandi potrebbero avere problemi, specie a velocità più alte. Ma lo switch PCA9546A perché ce l'hai? Problemi di indirizzi doppi? Io di PCF8574 ne ho usati tanti, mai avuto problemi. L'unica cosa da stare attenti è al fatto che i GPIO sono Quasi-Bidirectional (vedi i vecchi 8051 Intel). In particolare, se si vuole mandare un 1 (output high), l'uscita andrà a livello alto (Vdd) per mezzo ciclo di clock (SCK), poi viene mantenuto alto da un pull-up interno da 100uA. Siccome te hai messo, mi par di capire, un (inutile) resistenza di pull down da 10k, se moltiplichi i 100uA per 10k ottieni proprio 1V... Alza il pull down a 100k o toglilo pure, se vai diretto al 74LVC
del_user_97632 Inserita: 11 novembre 2019 Autore Segnala Inserita: 11 novembre 2019 (modificato) Ciao Livio, grazie del supporto (editato) ctec ha centrato, grazie mille. Non mi era mai capitato. (si ci sono problemi di indirizzi doppi. per questo il mux), si scheda e' di un cliente, molto complessa, segnalero del 10k inutile. guardavo il primo datasheet che mie e' capitato, TI, SCPS069F–JULY2001–REVISEDNOVEMBER2015 mi sto divertendo con la catena imx6q -> i2c mux pca9546a -> pcf8574a Appena verificato che il clock che viene dal mux e 82Khz, segnale integro e ben squadrato. Da linux, faccio root@hostx:/sys/class/gpio# ls export gpiochip0 gpiochip128 gpiochip160 gpiochip192 gpiochip32 gpiochip504 gpiochip64 gpiochip96 unexport root@hostx:/sys/class/gpio# echo 507 > export root@hostx:/sys/class/gpio# echo out > gpio507/direction root@hostx:/sys/class/gpio# while [ 1 ]; do echo 1 > gpio507/value; sleep 1; echo 0 > gpio507/value; sleep 1; done Pero ora zoomando il gpio output scoperta una interessante novita', sembrava andare a 1, ma per un attimo sta a 3.3 .... (devo mettere gli occhiali, sto resistendo, ma direi che e' ora) Modificato: 11 novembre 2019 da _angelo_
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora