Jump to content
PLC Forum


_angelo_

mistero livello alto "basso" su gpio

Recommended Posts

_angelo_

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.

 

Edited by _angelo_

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
_angelo_

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.

 

Edited by _angelo_

Share this post


Link to post
Share on other sites
Livio Orsini
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.

Share this post


Link to post
Share on other sites
Ctec

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

Share this post


Link to post
Share on other sites
_angelo_

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)

Edited by _angelo_

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...