Vai al contenuto
PLC Forum


mistero livello alto "basso" su gpio


del_user_97632

Messaggi consigliati

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: da _angelo_
Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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: da _angelo_
Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

image.png.4c4adbd10e1a052cd31135813b7a4c48.png

 

 

 

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  ....

 

 

image.png.182d0a347c016a3bf3335740c481d649.png

 

 

(devo mettere gli occhiali, sto resistendo, ma direi che e' ora)

Modificato: da _angelo_
Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...