I2C TWI 5V / 3V / SCL / SDA / Pegelwandler Interface Anpassung Schaltung

OP #3786484
Lesenswert?

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
Angehängte Dateien:
Gast #3786501
Lesenswert?

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!!!
#3786503
Lesenswert?

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
OP #3786512
Lesenswert?

>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
#3786520
Lesenswert?

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...
#3786521
Lesenswert?

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
#3786523
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren