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
Wenn der 8574 mit ca. 4V betrieben wird, dann passen sowohl die 3,3V-Pegel vom I2C als auch die 5V-Pegel vom Display.
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.
Na dann werd' ich das so machen :) Vielen Dank für eure Hilfe!
> > 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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.