PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 3.3V I2C ohne level shifter



malthy
02.03.2013, 13:40
Moin!

Ich bin gerade etwas verwirrt. Wenn es darum geht, zB 3.3V Sensoren an I2C zu betreiben, ist i.d.R. von level shiftern die Rede. Wenn ich es richtig sehe, sind SDA und SCL beim AVR aber als open drain Ports ausgeführt. Bedeutet das nicht, dass es möglich sein sollte SDA und SCL einfach per pull-up auf 3.3V (die man dafür allerdings zur Verfügung haben muss) zu ziehen und alles sollte laufen? 3.3V sollten vom AVR noch gut als high erkannt werden und solange die internen pull-ups im AVR aus sind, sollte ein high auf den I2C Pins durch open drain auch nur 3.3V sein. Ergo: man kann sich beim AVR den level shifter sparen ... Wäre nett, wenn das mal jemand kommentieren könnte. Vielen Dank für alle Hinweise!

Gruß
Malte

Kampi
02.03.2013, 13:57
Hey,

ja kannst du so machen.
I²C ist glaube ich immer als Open Kollektor oder Open Drain ausgeführt.
Ich mache das schon die ganze Zeit bei meinem Raspberry, indem ich den Bus auf 3,3V lege und die Sensoren entweder mit 3,3V versorge oder wenn es nicht anders geht (wie bei einer DS1307) das ich das Device mit 5V versorge.
So habe ich auch meinen PSoC der mit 5V läuft an mein Raspberry angeschlossen und es klappte 1a.
Bei AVRs habe ich es mal auf der Arbeit so gemacht, indem ich einen PCF8574 als Pegelwandler missbrauchte und von daher weiß ich das es bei den AVRs auch funktioniert.
Aber ansonsten solltest du lieber gegen checken ob der Controller / Device die niedrigen Pegel auch als logisch High interpretiert, da das Erkennen der Pegel ja von der Versorgungsspannung des Controllers / Devices abhängig ist.

malthy
02.03.2013, 14:04
Danke Daniel!

Ich hatte nochmal im Datenblatt von einem m168 nachgesehen, das steht als Input High Voltage 0.6*Vcc mit dem Kommentar "lowest value where the pin is guaranteed to be read as high", da 5V * 0.6 = 3V ist, bin ich mal davon ausgegangen dass es beim AVR gehen muss. Ist sicherlich etwas knapp, aber da Atmel von "guaranteed" spricht, denke ich, dass die 300mV genug "Luft nach oben" sind.

Kampi
02.03.2013, 14:06
Jap sollte gehen.
Der Hersteller garantiert ja das es bei 0,6Vcc noch funktioniert. Und selbst wenn erkennt die Logik die Pegel sicher noch wenn es ein Stückchen unter den 3V ist.