PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abschlusswiderstände AT-Mega und i2c Bus



modtronic
22.05.2011, 09:03
Moin

Ich habe folgende Frage.

Ich habe eine Bussystem gebaut.
Ein AT-Mega 16 treibt über ein poliges Flachbandkabel 8 Platinen auf denen jeweils 2 x PCF 8574 Portexpander seinen Dienst verrichtet. Das Flachbandkabel geht auf Wannenstecker und zwischen den beiden Leitungen SDA und SCL liegt immer einer dazwischen auf GND.
Die Karte mit dem AT ist der Master.

Ich habe für den Bus 4,7 K Pull-Up Widerstände vorgesehn.
Diese sind jeweils auf den Slavekarten (PCF 8574) und auf dem Master untergebracht.
Über Jumper kann ich diese Zuschalten.
Der Bus wird eine länge von ca. 10 m haben.
Wo ist es nun sinnvoll die Pull-Ups einzuschalten ??

modtronic

Besserwessi
22.05.2011, 09:25
10 m Länge für I2C ist reichlich viel. Für so lange Leitungen ist das nicht vorgesehen. Wegen der Leitungslänge wird man wohl besser mehr als einen der 4,7 K Widerstände aktivieren. 10 m Leitung + 16 ICs sollte etwa eine Kapazität von 1,2 nF haben. In den I2C Sepcs kann man irgendwo nachlesen was man da etwa für einen Widerstand bräuchte - vermutlich weniger als 4,7K, eher so 1 K oder 5 von den 4,7 K Widerständen.

Als Abschlusswiderstand im Sinne einer Anpassung des Wellenwiderstandes sind 4,7 K auch viel zu groß (da wären etwa 100-150 Ohm richtig). Bein I2C dienen die Widerstände als Pullup-Widerstände. Wo die Sitzen ist relativ egal - das kann auch verteilt sein, ggf. mit leichten Vorteilen an beiden Enden.

PICture
22.05.2011, 09:30
Hallo!

So wie der Besserwessi schon schrieb, bei so langen Kabel wird I2C Bus ohne Treiber wahrscheinlich schnell nicht gehen (schätzungsweise bis um 30 kHz).

Richard
22.05.2011, 09:35
Moin

Ich habe folgende Frage.

Ich habe eine Bussystem gebaut.
Ein AT-Mega 16 treibt über ein poliges Flachbandkabel 8 Platinen auf denen jeweils 2 x PCF 8574 Portexpander seinen Dienst verrichtet. Das Flachbandkabel geht auf Wannenstecker und zwischen den beiden Leitungen SDA und SCL liegt immer einer dazwischen auf GND.
Die Karte mit dem AT ist der Master.

Ich habe für den Bus 4,7 K Pull-Up Widerstände vorgesehn.
Diese sind jeweils auf den Slavekarten (PCF 8574) und auf dem Master untergebracht.
Über Jumper kann ich diese Zuschalten.
Der Bus wird eine länge von ca. 10 m haben.
Wo ist es nun sinnvoll die Pull-Ups einzuschalten ??

modtronic

Üblich ist an beiden Enden, also beim Master und beim letzten Slave. Allerdings ist das bei I²C etwas anders weil das dort Pull-Up NICHT Abschlusswiderstände zur Impedanz Anpassung sind. 4k7 ist aber OK weil die zusammen=parallel den Strom noch unter 3 mA halten. Wenn es Impedanz Probleme gibt kannst Du einmal versuchen den BUS als Ring zu verdraten, im Ring giebt es keine Leitungs Ruflektionen da ein geschlossener Kreislauf. Nachteil, man braucht mehr Adern.

Gruß Richard

Besserwessi
22.05.2011, 10:47
Ein Ring hilft auch nicht weiter. Man hat da zwar keine Refelxion am Ende, dafür aber das Zusammenlaufen der Wellen von beiden Seiten - der Effekt ist ziehmlich der gleiche. Als Nachteil hat man noch mehr kapazitive Last da sind die ca. 1200 pF auch so schon 3 mal mehr als bei I2C vorgesehen sind.

Gute I2C Chips sollten eine begrenzte Flankensteilheit haben (ob der AVR das hat, weiss ich aber nicht). Damit sollten Leitungs-Refelxionen das kleinere Problem sein. Beim Pullup - würde ich nahe an die 3 mA Grenze gehen die für I2C vorgesehen ist, also etwa 1,5 K (bzw. 3 der 4,7 K Widerstände) - eventuell sogar etwas darunter, denn die Kapazität ist drüber.

Richard
22.05.2011, 11:45
Ein Ring hilft auch nicht weiter. Man hat da zwar keine Refelxion am Ende, dafür aber das Zusammenlaufen der Wellen von beiden Seiten - der Effekt ist ziehmlich der gleiche. Als Nachteil hat man noch mehr kapazitive Last da sind die ca. 1200 pF auch so schon 3 mal mehr als bei I2C vorgesehen sind.




Darum habe ich auch vorsichtshalber "versuchen" geschrieben. Ich habe so etwas einmal bei einen RS485 Bus gemacht da es mit den üblichen 120 Ohm Abschluss Widerständen einfach nicht geklappt hat. Als Ring klappte das dann ohne größere Probleme, Leider war dadurch die Leitung aber etwas "sehr lang" ca. knapp 2 km. :-( Ich habe dann den/die Abschluss Widerstände mittels Poti und Ozzie so gewählt das ein Sauberes Rechteck mit steilen Flanken auf der Leitung erschien. OK damit gab es auch weniger Probleme (Lesefehler), Letztendlich habe ich wieder den Ring genommen und die Arbeitszeit Erfassung läuft seit 20 Jahren ohne Probleme, außer es zerhaut einmal wieder Überspannung alle SN75176 Leitungstreiber.

Gruß Richard