I2C zwischen 5V Master und 3.3V Slave

Habe mal eine allgemeine Frage, nicht direkt auf ein bestimmtes Bauteil bezogen.

Wie muss man die I2C Schaltung schalten wenn ein Master der mit 5V läuft mit einem Slave kommunizieren soll der mit 3.3 V läuft ?

Hi,

manche Treiber können trotz 3,3V Vcc 5V Pegel vertragen so wie hier. http://focus.ti.com/lit/ds/symlink/am26lv32.pdf

Gut !

Aber wie löst man das Problem wenn der eine 5V Vcc hat und der andere 3.3V Vcc, wobei der letztere leider nur 3.3V Pegel vertragen kann ?

Hi,

war jetzt mal etwas faul aber vielleicht hilft dir das weiter. http://www.mikrocontroller.net/articles/Pegelwandler#I2C-Bus:_gemeinsam_3.3V_und_5V

Danke,

Logic Level Converter: http://www.sparkfun.com/products/8745

Ich denke das ist eine brauchbare Lösung !

Nein, den Pegelwandler kannst du nicht verwenden da das I2C interface mit Open collektor Ausgängen arbeitet. grüße Uwe

Hallo uwefed,

kennst Du den vielleicht die korrekte Lösung ?

Der erste Anlauf mit Google bringt sofort die immer gute Quelle "mikrocontroller.net" hoch: http://www.mikrocontroller.net/articles/Pegelwandler

Udo, die Seite hatte big-maec schon aufgezeigt. Grüße Uwe

Ups, richtig. Da frage ich mich aber wieso Megaionstorm noch frägt. Auf der Seite steht schon alles.

PCA 9515 D: http://www.reichelt.de/?ARTICLE=70037;PROVID=2028

I2C Puffer mit Pegelwandlung. Der PCA9515 ist ein I2C-Bus Repeater, welcher I2C Busse mit verschiedenen Spannungen isoliert. Verfügbar bei Reichelt und DigiKey.

Hallo Megaionstorm

  • für das I2C-Levelshifting ist die Application-Note AN97055 von Herman Schutte die absolute Referenz. Die ist im Moment hier (http://ics.nxp.com/support/documents/interface/pdf/an97055.pdf) zu finden - ansonsten halt mal nach der AN-Nummer suchen. In der AN wird auch genau erklärt, warum diese einfache Schaltung beim I2C-Bus funktioniert - auch bzw. gerade mit Open-Kollektor-Ausgängen.

Der im Thread weiter oben erwähnte Sparkfun-Levelshifter implementiert genau dieses Design - wie auch eine Reihe anderer Produkte. Beim Sparkfun-Levelshifter sind auch noch ein paar zusätzliche Spannungsteiler drauf, die man aber für’s I2C-levelshifting nicht braucht. Anbei ein kleines Photo, welches den prinzipiellen Aufbau zeigt. Der Levelshifter ist das kleine orange Board; der Rest ist ein Pull-Down-Spannungsregler, um aus den 5V des Arduinos 3.3V zu machen. An den Levelshifter werden eigentlich nur die ein- bzw. ausgehenden I2C-Leitungen sowie die LV (“LowVoltage” in der Regel 3.3V) und HV (“HighVoltage” in der Regel 5V) angelegt, der Rest bleibt unbeschaltet. Die Masseleitungen müssen natürlich auch verbunden sein, das wird bei der Schaltung unten durch den Pull-Down-Spannungsregler erledigt. Es ist keine direkte Masseverbindung zum Levelshifter erforderlich!

DSC09811.JPG