Leitung I2C, Länge?

wie lang dürfen die Leitungen ca. werden, bevor Probleme auftreten?

kann Abschirmung die Leitung evtl. verlängern?

Hallo,
hab schon in Geräten mit bis zu 1m (gemischt Leiterbahnen und verdrillte Leitungen) gebaut, bislang ohne Probleme.

Für längere Leitungen, auch nach extern raus verwende ich immer diese Schaltung:


Funktioniert bei mir mit kabeln bis zu 50m fehlerfrei,
auch wenn das i2c Kabel mit Kabeln von Frequenzumformer parallel liegt.

Gruß Stefan

Es dürfen nur wenige cm sein.
Du kannst die Pullup-Widerstände verkleinern und die Kabellänge testen.
Oder du verwendest I2C-Portextender, dann gehen auch einige Meter.

also 50m müssen es nicht sein.

ich muss ne strecke von ca 60 bis 80cm überbrücken.

in dem falle für ein LCD display und ein RFID shield.

garagenloeter:
also 50m müssen es nicht sein.

ich muss ne strecke von ca 60 bis 80cm überbrücken.

in dem falle für ein LCD display und ein RFID shield.

Mit kleineren Pullups sollte das funktionieren.

ok, danke für die info.

sollte also grundsätzlich machbar sein.

garagenloeter:
ok, danke für die info.

sollte also grundsätzlich machbar sein.

Ja sicher, aber auch auf Kabelführung achten.

Ich habe 3-4m Kat 5 LAN Kabel genommen, hat bei mir problemlos funktioniert.

Reden wir mal zuerst von I2c Bussen ohne Extender oder Accelerator.

Die max Länge eines I2C Busses hängt von viele Faktoren ab:

  • vom Typ von Kabel/Verbindung und dessen Länge (Kapazität zu Masse), (abgeschirmte Kabel können schlechter sein)
  • der Anzahl der betriebenen Slaves (Engänge brauchen ein bißchen Strom)
  • der Übertragungsgeschwindigkeit,
  • dem Wert des Pullupwiderstandes.

Der I2C Bus wird von den Geräten mittels eines OpenCollektor bzw Open Drain Ausgangs auf Masse gezogen. Der HIGH-Level wird durch einen Pullupwiderstand erreicht. Durch die Leitungskapazität und Last der Eingänge braucht der Pullupwiderstand einige Zeit um den Bus auf HIGH Potential zu laden. Ist diese Zeit zu lang gegenüber der Übertragungsgeschwindigkeit erreicht der Spannungspegel nicht mehr HIGH und der Bus kann nicht mehr funktionieren.

Hier https://gammon.com.au/forum/?id=10896&reply=5#reply5 beschreibt Nick Gammon sehr gut das Problem und belegt es mit Bildern.

Abhilfe können I2C Bus Extender wie zB der bereits erwähnte P82B715 schaffen. Diese haben eine Treiberstufe die mehr Strom liefern kann und somit die Länge der Übertrageung ca ver10fachen. Dazu braucht es kleinere Pullupwiderstände.

Eine zweite Abhilfe sind I2C Bus Accelerator zB LTC1694 (den ersten den ich gefunden habe). Diese Schalten den Bus aktiv auf Versorgungsspannung sobald sich die Spannung des Busses durch Pullupwiderstände etwas erhöht hat (ca 0,65V). Dadurch steigt die Spannung schneller auf HIGH Level und somit funktioniert das bei größeren Kabelkapazitäten sprich Kabellängen.
http://www.linear.com/product/LTC1694 ist ein schönes Bild davon. Acceleratoren können nicht zwischen 2 Bus Extender geschaltet werden. Nur auf dem normalen I2C Bus

Grüße Uwe