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