www.mikrocontroller.net

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


Autor: dago (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: dago (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: dago (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann werd' ich das so machen :)

Vielen Dank für eure Hilfe!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: dago (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir doch mal diesen einfachen Pegelwandler an.

Ist von Philips/NXP und klappt bestens.

http://www.standardics.nxp.com/support/documents/i...

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

avr

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.