Geschätztes Forum, ein 3,3V Slave (z.B.HP03S) soll an einem 5V I2C-BUS betrieben werden. Könnte man diese Schaltung verwenden, welche Nachteile hat sie? Die SCL -Leitung wird theoretisch nur vom MASTER (µC) angesteuert, somit würde ja eine einfache Diode ausreichen, um SCL gegen GND zu ziehen. Nur bei der SDA -Leitung wird's interessant, denn der Slave muss dies Leitung auch gegen GND ziehen können. Ein einfacher Transistor (in Basisschaltung) könnte dies Aufgabe übernehmen, ein FET wäre natürlich auch möglich. Welchen FET würdet Ihr empfehlen? Bernhard
:
Bearbeitet durch User
Hallo, Bernhard S. schrieb: > Die SCL -Leitung wird theoretisch nur vom MASTER (µC) angesteuert, > somit würde ja eine einfache Diode ausreichen, um SCL gegen GND zu > ziehen. Nein, denn es gibt das sogenannte "Clock-stretching". Der Slave kann denn Clock eine Weile (mehrere Mikrosekunden bis ...) auf Low ziehen bis er die Daten etc. bereit hat und so den Master bremsen. Du musst beide Leitungen gleich behandeln!!!
Noch ein Vorschalg mit einem N-Kanal-FET BSN10.
Wenn du Glück hast kannst du die einfach direkt verkabeln und Pullups auf 3.3V machen. Der 5V-Baustein müsste das eigentlich als High erkennen. Ansonsten wird's schwer von Hand, dann würde ich lieber einen der zahlreichen 5V-toleranten I2C-Bus-Repeater ICs einsetzen. Grüße, Sven
>Nein, denn es gibt das sogenannte "Clock-stretching".... >Du musst beide Leitungen gleich behandeln!!! Danke, ein sehr wertvoller Hinweis. Bernhard
>Wenn du Glück hast kannst du die einfach direkt verkabeln und Pullups >auf 3.3V machen. Der 5V-Baustein müsste das eigentlich als High >erkennen. Ja, aber !!! Es ist nicht auszuschließen, dass am BUS (z.B. Programmierfehler) ein Pegel von 5V aniegt, dann könnte der SLAVE ev. Schaden nehmen und unbrauchbar werden. Bernhard
Es ist auch nicht auszuschließen, dass du einen Hammer auf deinen Schaltkreis fallen lässt. Dann ist er auch hin. ;) Solange du nicht explizit deine I2C-Pins auf Output und dann auf High schaltest, wüsste ich nicht, was da schief gehen sollte.
Was spricht gegen die von NXP in der AN10441 gezeigte Schaltung? http://www.nxp.com/documents/application_note/AN10441.pdf Oder sonst die im Artikel Pegelwandler genannten Varianten
Bernhard S. schrieb: >>Wenn du Glück hast kannst du die einfach direkt verkabeln und > Pullups >>auf 3.3V machen. Der 5V-Baustein müsste das eigentlich als High >>erkennen. > > Ja, aber !!! > > Es ist nicht auszuschließen, dass am BUS (z.B. Programmierfehler) ein > Pegel von 5V aniegt, dann könnte der SLAVE ev. Schaden nehmen und > unbrauchbar werden. Und es wäre auch außerhalb der Spezifikationen: Laut "Two-wire Serial Interface Characteristics" des ATmega8 muss die Input High-Voltag min. 0.7Vcc sein, 5V*0.7=3.5V...
Ich bin ein bisschen skeptisch ob ein beliebiger Pegelwandler reicht, schließlich hat i2c noch diesen Tri-State-Zustand der auch korrekt abgebildet werden muss. Ich würde dann eher zu einem i2c bus repeater raten. Ich habe mal den hier [1] verbaut, funktioniert gut. Das mit den 3.5V ist natürlich Pech, dann geht die einfache Lösung leider nicht. Naja. _____ [1] http://www.nxp.com/documents/data_sheet/PCA9515.pdf
:
Bearbeitet durch User
Sven B. schrieb: > Tri-State-Zustand Ich zähle nur zwei: - Transistor im IC schaltet durch: Low auf der Leitung - Transistor sperrt (also hochohmig): Pullup zieht die Leitung auf High Diese beiden zustände gehen Problemlos durch den Pegelwandler aus dem MOSFET + Widerstände. Diese Lösung wird auch in einer Appnote von NXP beschrieben: http://www.nxp.com/documents/application_note/AN10441.pdf
:
Bearbeitet durch User
Ok, stimmt. Der Tri-State an den ich dachte ist derselbe wie der zweite den du auflistest.
@alle ich danke Euch für die zahlreichen Antworten. Bernhard
Wie siehts damit aus: http://www.dx.com/p/jy-mcu-5v-3v-iic-uart-spi-level-4-way-converter-module-adapter-178286 Hat jemand sowas schon mal verwendet ?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.