Ich muss einen TDA7312 über SDA/SCL an die I2C-Schnittstelle von Arduino DUE anschließen.
TDA7312 arbeitet mit 9 V, Arduino DUE mit 3,3 V. Ist es möglich, es sicher anzuschließen, ohne es zu verbrennen? Oder was soll ich verwenden (Level-Shifting vielleicht?), Was ist der richtige Weg?
Ich habe einige Schaltpläne für 5 V <-> 3,3 V gesehen, aber nichts für höhere Spannungen.
Die beiden I2C-'BUS'-Eingänge/Open-Drain-Ausgänge haben von mindestens 3 V, daher sollten sie direkt von einem 3,3-V-Logikausgang (I2C-Pullup auf 3,3 V) in Ordnung sein. Dies sollten die einzigen Verbindungen zwischen den beiden Geräten sein (außer Masse).
Denken Sie daran, dass der I2C-Bus als offener Kollektor spezifiziert ist , siehe Wikipedia-Link für weitere Informationen . Dies bedeutet, dass kein I2C-Gerät einen tatsächlichen High-Side-Treiber enthält. Ihre Platine muss die Busleitungen über Widerstände auf die Spannung hochziehen, die mit Ihren Geräten kompatibel ist. Jedes Gerät kann dann entweder die Leitungen auf hohe Impedanz (um den Wert der Leitung zu lesen oder eine '1' zu schreiben) oder Masse setzen die Zeile (um eine '0' zu schreiben). Das Minimum beträgt anscheinend 3 V für den TDA7312, was bedeutet, dass jede Spannung über 3,0 V als '1' gelesen werden sollte. Da 3,3 V > 3,0 V sind und Ihr Duo 3,3-V-Eingänge tolerieren kann, sollte ein Pull-up-Widerstand zur 3,3-V-Stromschiene den Bus mit beiden Geräten kompatibel machen, ohne dass eine Übersetzung der Logikpegel erforderlich ist.
Von der NXP-Website:
AN10441 - Pegelverschiebungstechniken im I2C-Bus-Design .
Verwendete die Schaltung, um einen 5-V-Arduino an einen 3,3-V-Wii-Nunchuck anzuschließen. Lief wie am Schnürchen.
Ein bidirektionaler Pegelumsetzer wie der im Schema von Sparkfun gezeigte sollte für Ihre Anwendung funktionieren, da die Hochspannung durch die maximale Nennspannung des MOSFET begrenzt ist.
kkazakov
kupfer.hut