Forum: Mikrocontroller und Digitale Elektronik Spannungen bei I²C


von Pikko (Gast)


Lesenswert?

Hallo,

ich bin neu in der Welt der µC und bin nun dabei angekommen mich etwas 
mit I²C auf dem ATMega16 als Master zu beschäftigen. Dazu habe ich mir 
eine kleine Sensorplatine gekauft, welche eine Betriebsspannung von 3,3V 
hat und eben über I²C mit meinem ATMega16 kommunizieren soll. Dieser 
läuft mit 5V VCC. Nun werden auf der Sensorplatine die SDA und 
SCL-Leitungen schon durch einen Pullup auf 3,3V gezogen. Laut Hersteller 
soll es aber kein Problem sein, die Sensoren dann auch mit einem 5V Chip 
kommunizieren zu lassen.
Jetzt stellt sich mir die Frage wie das gehen soll. Das Empfangen der 
Daten auf dem Master kann ich mir ohne Probleme vorstellen. Der Slave 
zieht die Leitung entweder auf GND oder 3,3V-VCC und der Master erkennt 
das. Wenn der Master jetzt aber Daten schicken soll stelle ich mir das 
ganze problematisch vor. Das runterziehen der Leitung auf GND sollte ja 
noch ohne Probleme geben, wenn der Master die Leitung jetzt aber auf 
seine 5V-VCC zieht, habe ich dann nicht einerseits eine viel zu hohe 
Spannung am Slave anliegen und anderseits fließt dann nicht Strom in die 
3,3V-Quelle rein?
Wieso sagt der Hersteller dennoch, dass das keine Probleme gibt?

von Wolfgang (Gast)


Lesenswert?

Pikko schrieb:
> Das runterziehen der Leitung auf GND sollte ja
> noch ohne Probleme geben, wenn der Master die Leitung jetzt aber auf
> seine 5V-VCC zieht

Das tut er nicht. Wenn da jemand zieht, dann tut das der Pull-Up. Falls 
der Chip auf deiner Sensorplatine am Eingang interne Schutzdioden gegen 
VCC bzw. Gnd hat, wird die Spannung auf 3.3V+Vf, also etwas unter 4V 
zusammenbrechen.

von Peter R. (pnu)


Lesenswert?

Pikko schrieb:
> Wieso sagt der Hersteller dennoch, dass das keine Probleme gibt?

Wahrscheinlich, weil der Hersteller dafür gesorgt hat, dass die Eingänge 
auch bei 3,3V 5V-tolerant sind.

 Dumm wirds dann mit den pull-up-Widerständen, die nach 3,3V gehen. Die 
würden die 3,3-Versorgung aus den 5V aufladen, wahrscheinlich auf 5V.

Wahrscheinlich müssen da die I2C-Leitungen auf der master-Seite auf 5V 
hochgezogen werden, der 3,3 Baustein kommt mit den Pegeln an dem auf 5V 
Pegel hochgezogenen Bus zurecht. Er selbst zieht wegen 
open-collector-Ausgang beim Ack usw. die Bussignale von 5V auf 0V 
herunter, obwohl er selbst mit 3,3 versorgt ist. Pull-ups beim slave 
also weglassen.

 Soweit ich weiß, benötigt man für den ganzen Bus nur einmal die 
pullup-Widerstände, nicht bei jedem Teilnehmer.

von Pikko (Gast)


Lesenswert?

Danke für die Antwort. Kann ich mir das also so vorstellen, dass die 
Chips die Leitung entweder auf GND ziehen oder einfach nichts tun, so 
dass die Leitung vom Pullup auf 3,3V gezogen wird?

von M. P. (phpmysqlfreak)


Lesenswert?

Pikko schrieb:
> Danke für die Antwort. Kann ich mir das also so vorstellen, dass
> die
> Chips die Leitung entweder auf GND ziehen oder einfach nichts tun, so
> dass die Leitung vom Pullup auf 3,3V gezogen wird?

Genau so ist es.

von Sven B. (scummos)


Lesenswert?

Genau. Wenn du einen 5V und einen 3.3V-Baustein über I2C verbinden 
willst, kannst du idR einfach die Pullups auf 3.3V machen und dann tut 
das schon.

von Peter R. (pnu)


Lesenswert?

Pikko schrieb:
> Kann ich mir das also so vorstellen, dass die
> Chips die Leitung entweder auf GND ziehen oder einfach nichts tun, so
> dass die Leitung vom Pullup auf 3,3V gezogen wird?

Eher so: Der Master- pullup zieht die Leitungen auf 5V. Die Eingänge der 
slaves sind aber so ausgeführt, dass sie die 5V vertragen (also ohne 
Schutzdioden nach 3,3V)

Die andre logische Erklärunge wäre: Der Bus wird per pullup auf 3,3V 
gezogen und der Master ist imstande, die 3,3V als high-Pegel zu 
erkennen.

von Wolfgang (Gast)


Lesenswert?

Peter R. schrieb:
> Soweit ich weiß, benötigt man für den ganzen Bus nur einmal die
> pullup-Widerstände, nicht bei jedem Teilnehmer.

Die Signale sind sauberer (reflektionsärmer, weniger HF-Spikes), wenn an 
jedem Ende der Leitung ein Abschlußwiderstände sitzt.
http://i2c2p.twibright.com/spec/i2c.pdf

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
Noch kein Account? Hier anmelden.