Hallo Leute,
wir wollen 3,3V-Geräte über einen Pegelwandler (MOD-1003 von 'embedded
adventures) an einem 5V-AVR betreiben (I2C/TWI). Eines dieser Geräte
funktioniert (ohne Probleme?) direkt am 5V-I2C-Bus. I2C-start
funktioniert und er bekommt ein ACK. Hinter dem Pegelwandler
funktioniert das aber nicht. Wir haben das mit einem logic-level-sniffer
überprüft, die Übersetzung scheint zu funktionieren (sieht zumindest in
der Grafik gleich aus). Anfangs hatten wir einen zu hohen Low-Pegel
vermutet und pull-downs an SDA und SCL gelegt, aber es gab keine
Veränderung (immer ein NACK).
So, wir sind etwas überfragt, die Pegel scheinen zu stimmen, der
Pegelwandler scheint auch korrekt zu 'übersetzen', zumindest ein Gerät
ist über die 5V-Seite ansprechbar und antwortet auch, aber eben nicht
hinter dem Pegelwandler. Woran kann das liegen?
Hallo PePo,
ich kenne den Pegelwandler jetzt nicht und kann auch kein Datenblatt
finden.
Aber ist der Bidirectional und wenn ja - "Auto-Bidirectional"???
Ich hatte mal einen von TI, der hatte einen Eingan, mit dem man die
Richtung steuern konnte/musste....
LG aus Addis Ababa
Klaus
...einen hab ich noch....
Hast Du mal das Timing geprueft....lege mal "beide Seiten" uebereinander
am Logic-Analyzer...
Also Primaere Seite 2 Kanaele und Sekundaere Seite 2 weitere Kanaele und
dann schau mal....
sind dort Verzoegerungen? Beides pruefen SDA und SCK....
Und abermals einen LG aus Addis
Man könnte ohne Pegelwandler auskommen. Wenn ich die Anforderung richtig
verstehe, sind alle Slaves 3,3V Geräte. Nur der AVR liegt an 5V. Wenn
seine Eingänge auch bei der Verwendung mit I2C TTL kompatibel sind,
sollten sie ein High bei 2,4V erkennen. Man könnte also die Pullups von
SDA und SCL auf 3,3V legen und der Bus sollte ohne Pegelwandler
funktionieren.
MfG Klaus
Vielen Dank für die Anregungen!
- Pegelwandler ist bidirektional und bringt auch gleich 3,3V mit
http://www.embeddedadventures.com/datasheets/MOD-1003_hw_v1_1.pdf
laut Datenblatt: anschließen und um nichts weiter kümmern (mmhhh..)
- Oszi wäre die nächste Anschaffung
- Pegel liegen übereinander (s. Anhang, vielleicht seht Ihr da mehr als
wir), so timing scheint zu stimmen
Wir haben ein bißchen Code gebastelt, womit er alle I2C Adressen
nacheinander abfragt. Manchmal erkennt er auch einen oder zwei der sechs
Adressen. Aber das ist völlig wahllos.
- ohne level shifter wird das wohl schwierig, da wir auch noch ein 5V
Gerät am selben Bus betreiben wollen; aber wir wären erst mal froh, wenn
wir das eine 3,3V Gerät zum Antworten bringen.
Freundlichst PePo
Da braucht es doch keinen Oszi! Man sollte sich schon erst mal klar
machen, wie der I2C-Bus funktioniert, statt einfach irgendeinen
Pegelwandler in die Schaltung zu fummeln.
PePo schrieb:> - ohne level shifter wird das wohl schwierig, da wir auch noch ein 5V> Gerät am selben Bus betreiben wollen
Wenn auch das ein High bei weniger als 3V erkennt, sollte auch das
gehen. Bei vielen Busteilnehmern sollte man die Pullups an die untere
Grenze dimensionieren.
MfG Klaus
Hallo,
der Pegelwandler war das Problem. Wenn der -- egal auf welchem der 4
Kanäle -- Kontakt mit SCLK hat, bringt er den Bus durcheinander. Egal,
ob da ein 3,3V Gerät dran ist oder SDA angeschlossen ist oder nicht. Wir
nutzen den nun als Konstantspannungsquelle und die Geräte laufen auch
alle am Bus.
Vielen Dank noch mal für die Anregungen!
MfG
Hallo,
habe gerade die gleiche Problematik (5V Atmega + 3,3V Sensor) und bin
dabei auf dieses Bild gestoßen. Funktioniert das wirklich so einfach?
http://i.stack.imgur.com/Ws0Ta.png
Martin schrieb:> Funktioniert das wirklich so einfach?
Kann es, muss es aber nicht. Die Input High Voltage muss laut Datenblatt
min 0,7 Vcc sein. 0,7 * 5V = 3,5V.
Versorg den Mega mit 3,3V und gut ist.
Datasheet Ausschnitt:
the TXB0104 should not be used in applications such as I2C or 1-Wire
where an open-drain driver is connected on the bidirectional data.