Forum: Mikrocontroller und Digitale Elektronik PCF8574 I/O 5V trotz 3.3V SDA/SCL?


von dago (Gast)


Lesenswert?

Ich habe hier ein System mit einem Embedded Linux. Dort habe ich zwar 
genug I/O Pins um ein Display direkt dran anzuschliessen, doch die Pins 
haben alle 3.3V Pegel und die Displays, die ich da habe funktionieren 
alle mit 5V. Eine 5V Versorgung ist möglich.

Nun dachte ich, dass ich keine Bauteile mehr kaufen muss um das Display 
anzuschliessen, nehme ich diesen I/O Expander. Wenn ich den nun mit 5V 
versorge kommen ja 5V an den Ausgängen raus. Verstehen SDA und SCL 
dennoch 3.3V?

Im Datenblatt steht was von Operating Supply 2.5V...6V. Also würde 3.3V 
ja funktionieren. Dann bei LOW Input level Voltage -0.5V ... 0.3Vdd. Bei 
HIGH level input Voltage 0.7Vdd ... Vdd + 0.5V.
Das würde ja heissen, dass das funktioniert? Leider habe ich von 
Elektronik so gut wie kaum Ahnung und bin mir da nicht sicher.

Für weitere I/O Basteleien wär das ja dann auch genial, den INT# Pin 
würde ich dann einfach per Spannungsteiler auf 3.3V runterziehen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

I2C verwendet Open-Collector-Ausgänge, der Spannungspegel wird durch die 
Spannung an den Pullup-Widerständen festgelegt.

Der Spannungspegel, ab dem ein logisches High eingangsseitig erkannt 
wird, ist im Datenblatt spezifiziert, üblicherweise als Quotient der 
Betriebsspannung.

Und da liegt der Hase im Pfeffer. Das Datenblatt spezifiziert den 
unteren Pegel für Vih als 0.7 VDD, also als 0.7 * 5V. Das sind 3.5 V, 
und damit liegt der High-Pegel Deines I2C-Busses unterhalb des 
zulässigen Pegels.
Eine stabile Funktion ist damit nicht gewährleistet.

Die saubere Lösung ist hier die Verwendung eines geeigneten 
Pegelwandlers; der PCA9517 ist dafür ein geeigneter Kandidat:

http://www.nxp.com/acrobat_download/datasheets/PCA9517_3.pdf

von (prx) A. K. (prx)


Lesenswert?

Wenn der 8574 mit ca. 4V betrieben wird, dann passen sowohl die 
3,3V-Pegel vom I2C als auch die 5V-Pegel vom Display.

von dago (Gast)


Lesenswert?

Hmmm, mit dem 4V das scheint mir nur eine Bastellösung, die in den 
meiste Fällen funktionieren wird, aber irgendwann klemmts mal da dran.

Ich habe da dran auch einen 8Bit 5V toleranten IO Port, eigentlich 
wollte ich den für direkten I/O nach draussen verwenden, aber das muss 
nicht unbedingt sein.

Wenn ich die IO Leitungen für SDA und SCL mit einen Pullup auf 5V lege, 
dann müsste das doch mit dem PCF auf 5V funktionieren, oder?

von (prx) A. K. (prx)


Lesenswert?

dago schrieb:

> Hmmm, mit dem 4V das scheint mir nur eine Bastellösung, die in den
> meiste Fällen funktionieren wird, aber irgendwann klemmts mal da dran.

Warum? Sind alle Pegel korrekt eingehalten. Mit genug Abstand.

> Wenn ich die IO Leitungen für SDA und SCL mit einen Pullup auf 5V lege,
> dann müsste das doch mit dem PCF auf 5V funktionieren, oder?

Klar. Die beste Lösung.

von dago (Gast)


Lesenswert?

Na dann werd' ich das so machen :)

Vielen Dank für eure Hilfe!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> > Wenn ich die IO Leitungen für SDA und SCL mit einen Pullup auf 5V lege,
> > dann müsste das doch mit dem PCF auf 5V funktionieren, oder?
>
> Klar. Die beste Lösung.

Das ist mutig, setzt es doch voraus, daß der I2C-Bus auf dem 
Embedded-Linux-System und alle dort verbauten Komponenten 5V-tolerant 
sind.

Wenn das nicht sichergestellt ist, ist das Pfusch.

von (prx) A. K. (prx)


Lesenswert?

Ich hatte es so verstanden, dass 2 Pins von einem bisher komplett freien 
Port für den 8574 verwendet werden sollen. Wenn da natürlich auch 
onboard I2C/SMB ran soll sieht das anders aus.

von dago (Gast)


Lesenswert?

Das Board an sich kann kein I2C, also nur per Software. Ich habe 
insgesamt 20 I/Os, von denen 8 Stück, ein Port, 5V tolerant sind. Alle 
Hardware, die da per I2C ran soll, läuft mit 5V.
Wenn da irgendwann mal was mit 3.3V kommen soll, kann ich ja ohne 
Probleme das Software-I2C auf die anderen Pins anpassen oder einen 
Pegelwandler einbauen.

von avr (Gast)


Lesenswert?

Schau dir doch mal diesen einfachen Pegelwandler an.

Ist von Philips/NXP und klappt bestens.

http://www.standardics.nxp.com/support/documents/i2c/pdf/an97055.pdf

Dann kannst du deinen 8574 + Display mit 5 V laufen lassen.

avr

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gut, das ändert das Problem grundlegend.
Den 8574 kannst Du direkt mit 5V speisen, die I2C-Pullups kommen an 5V 
und fertig ist die Laube.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.