Ich versuche, ein 3,3-VI- 2 -C-Gerät an ein 5-V-Arduino anzuschließen.
Ich habe kein Problem mit der SCL-Leitung. Ich kann einen einfachen Spannungsteiler verwenden, aber ich habe ein Problem mit der SDA-Leitung, da diese bidirektional ist.
Ich bin mir überhaupt nicht sicher, wie ich damit umgehen soll. Ich habe jedoch ein Paar Dioden hinzugefügt, mit einem Spannungsteiler auf der Slave-Eingangsseite und nichts Extra am Master-Eingang.
Gibt es noch andere Lösungen?
Ein gutes Dokument zu diesem Thema ist Bidirektionaler Pegelumsetzer für I2C-Bus und andere Systeme , die einen einzelnen Mosfet als bidirektionalen Pegelumsetzer verwenden.
Um die Antwort von sivu zu erweitern, ist dies eine übliche Verwendung für sogenannte "Busschalter", bei denen es sich im Grunde um logikgesteuerte MOSFETs handelt. Die Verwendung diskreter MOSFETs hat einige Nachteile (parasitäre Kapazität / kapazitive Kopplung sind einer davon) und es kann schwierig sein, einen guten MOSFET auszuwählen. Die Busschalter sind für den Einsatz in Hochgeschwindigkeits-Logikschaltungen optimiert.
Mehrere Hersteller stellen sie her, darunter Fairchild, TI, IDT und Pericom. Schauen Sie sich den NC7SZ384 an .
Siehe unter anderem die folgenden Appnotes:
Viele Arduinos haben Onboard-Unterstützung für den Betrieb mit 3,3 V. Tatsächlich können alle mit 3,3 V betrieben werden, und der FTDI-Chip-Schema erklärt in einem Beispiel, wie das geht. Paul, der den Teensy USB Arduino herstellte , hatte vorgeschlagen, dass ich das USB-Kabel aufspleißen und eine 3,3-V-Spannung anstelle der V CC -Leitung des Kabels liefern könnte. Sie könnten dies versuchen. Aber es gibt auch andere Möglichkeiten.
Schließlich haben wir hier auf Chiphacker eine Diskussion über unidirektionale und bidirektionale Lösungen zur Spannungsabsenkung , die Sie interessieren könnte . Dieser von todbot erwähnte Artikel zu SparkFun ist nützlich, ebenso wie die Diskussion über den Artikel über bidirektionale MOSFETs , der von SparkFun verlinkt ist. Um den SparkFun-Artikel zusammenzufassen:
Es gibt ICs, die speziell für die Pegelverschiebung von I2C verfügbar sind:
Ich weiß nicht, welche Art von Einschränkungen Sie bei Ihrem Design haben, aber ich würde denken, dass die Verwendung eines dedizierten ICs einfacher wäre, als eine eigene Lösung zu finden.
Das Photon