Moin,
ist es möglich den I2C Bus ohne zusätzlichen Treiber über 25cm
Flachbandkabel und 40cm Leiterplatine an einen IC-Slave zu binden?
Bekomme ich bei so einer Entfernung noch 100kHz als Frequenz hin?
Hab in manchen Beiträgen gelesen, dass die Pullups dann an beiden Enden
installiert werden sollten - warum?
SPI würde mir als Alternative noch zur Verfügung stehen - bedeutet aber
mehrere Leitungen....
Gruß
Olaf
Olaf schrieb:> Hab in manchen Beiträgen gelesen, dass die Pullups dann an beiden Enden> installiert werden sollten - warum?
Als Leitungsabschluß mit der Impedanz der Leitung, um Reflektionen (und
damit Signalverformungen) zu verhindern.
MfG
Hallo Olaf!
> ist es möglich den I2C Bus ohne zusätzlichen Treiber über 25cm> Flachbandkabel und 40cm Leiterplatine an einen IC-Slave zu binden?
Ja... Ich betreibe mehrere Temperaturfühler über je 2m Kabel am I2C-Bus,
läuft seit Jahren reibungslos...
> Bekomme ich bei so einer Entfernung noch 100kHz als Frequenz hin?
Auch 400kHz sind hier kein Problem...
LG Jens
coole Sache: hab hier schon ein paar Beiträge gelesen bezüglich dieser
Längen. Weißt du wie hoch der pF/cm auf einer FR4-Platine ist und / oder
Flachbandkabel?
Laut Spezifikation vom I2C hat manja 400pF zur Verfügung, wo es auf
jeden Fall noch funktionieren soll ohne Treiber oder ähnlichem.
@ Michel (Gast)
>> Hab in manchen Beiträgen gelesen, dass die Pullups dann an beiden Enden>> installiert werden sollten - warum?
Weil es eine Legende ist.
>Als Leitungsabschluß mit der Impedanz der Leitung, um Reflektionen (und>damit Signalverformungen) zu verhindern.
Eben das ist Unsinn. I2C ist a) viel zu langsam bezüglich der
Anstiegszeiten und b) sind die üblichen Pull-Ups mit 1-10K viel zu
hochohmig, um als Terminierung wirken zu können. Siehe
Wellenwiderstand.
@ Olaf (Gast)
>coole Sache: hab hier schon ein paar Beiträge gelesen bezüglich dieser>Längen. Weißt du wie hoch der pF/cm auf einer FR4-Platine ist und / oder>Flachbandkabel?
Wenn mich nicht alles täuscht hat Flachbandkabel um die 50pF/m.
Leitungen auf FR4 liegen meist noch drunter, weil der Abstand zur Masse
höher ist (doppelseitige Platine).
>Laut Spezifikation vom I2C hat manja 400pF zur Verfügung, wo es auf>jeden Fall noch funktionieren soll ohne Treiber oder ähnlichem.
Mach dir mal nicht soviele Gedanken, I2C ist deutlich robuster als es
auf dem Papier steht. Da kann man problemlos mit der Taktrate
runtergehen, wenn es denn nötig sein sollte.
MFG
Falk
P S Ich hatte mal mit einer Schaltung am I2C Bus in Industrieumgebung zu
tun, dort lief der I2C Bus über 150m geschirmtes Kabel (oder waren es
500m?, weiß nicht mehr genau).
MfG
Falk
Terminieren sollte man (unabhängig von frequenz), wenn die Anstiegs-
/Abfall-Zeit schneller ist, als die doppelte Laufzeit der Leitung.
Bei 20ns risetime und 5ns/m Kabel-Laufzeit wäre das ab einer Kabellänge
von 2m.
Ich hatte einen I2C Bus von 1,5m Länge in einer turbulenten Umgebung
(Gepulste Ströme von bis zu 20A) laufen und es lief äußerst unstabil,
bis ich ein USB-Kabel zur übertragung verwendet und die Schirmung auf
GND gelegt hatte (achtung, nicht die Datenleitungen für I2C verwenden,
die sind verdrillt...damit gings bei mir garnicht...erst mit den
Versorgungsleitungen gings relativ sauber)
Wieso verwendest du nicht UART? Ist soweit ich weiß stabieler.
Gruß, Yaro
MCUA schrieb:> Terminieren sollte man (unabhängig von frequenz), wenn die Anstiegs-> /Abfall-Zeit schneller ist, als die doppelte Laufzeit der Leitung.> Bei 20ns risetime und 5ns/m Kabel-Laufzeit wäre das ab einer Kabellänge> von 2m.
Nun ja, 20ns risetime ist ja auch eine Frequenz, 20ns rise, 20ns fall
25MHz.
Bei I2C ist das Problem ein anderes. Der Bus ist open collector und kann
von allen Busteilnehmern auf low gezogen werden. Die minimale
Treiberleistung für einen Ausgang ist 3mA, bei der jeweils gewählten
Busspannung ergibt sich daraus ein minimaler Pullup. Der Maximale Pullup
ergibt sich aus der Buskapazität, der Busspannung und der maximalen
risetime von 250ns.
Das kann man aber leicht nachlesen, "THE I2C-BUS SPECIFICATION" von
Philips, Version 2.1 aus dem Jahr 2000 hat nur 46 Seiten. Da steht alles
drin und man muß nicht raten.
Auch wenn hier bei I2C Problemen viel an den Pullups gedocktert wird,
wenn sie nicht gerade ganz vergessen worden sind, sind sie eigentlich
nie das wirkliche Problem.
Yaro schrieb:> ch hatte einen I2C Bus von 1,5m Länge in einer turbulenten Umgebung> (Gepulste Ströme von bis zu 20A) laufen und es lief äußerst unstabil,> bis ich ein USB-Kabel zur übertragung verwendet und die Schirmung auf> GND gelegt hatte (achtung, nicht die Datenleitungen für I2C verwenden,> die sind verdrillt...damit gings bei mir garnicht...erst mit den> Versorgungsleitungen gings relativ sauber)> Wieso verwendest du nicht UART? Ist soweit ich weiß stabieler.
Wenn deine Umgebung soviel Mist in einen digitalen Eingang einstreut,
daß er falsche Signale sieht, ist es egal ob dahinter ein I2C Empfänger
oder ein UART sitzt. Du hättest also immer abschirmen müssen. Und wie
gut ein UART funktioniert, wenn du einen Kondensator zwischen Transmit
und Receive schaltest (das ist verdrillen), weiß ich jetzt nicht. Wenn
man's richtig macht, geht aber beides.
MfG Klaus
>Nun ja, 20ns risetime ist ja auch eine Frequenz, 20ns rise, 20ns fall 25MHz.
Nein, zwischen rise u. fall können etliche us liegen.
>Bei I2C ist das Problem ein anderes.
Das Problem der Reflexion ist prinz. immer da, denn dadurch kann es zu
Fehl-CLK-Interpretat. uä kommen, wenn der Empfänger nicht entspr. Filter
drin hat.
Michel schrieb:> Als Leitungsabschluß mit der Impedanz der Leitung, um Reflektionen (und> damit Signalverformungen) zu verhindern.
Frage : Wie berechnet / misst man die Impedanz der verwendeten Leitung ?
MCUA schrieb:>>Nun ja, 20ns risetime ist ja auch eine Frequenz, 20ns rise, 20ns fall 25MHz.> Nein, zwischen rise u. fall können etliche us liegen.
Danke für den Hinweis, wäre ich sonst nicht drauf gekommen. Könnten das
auch ms sein?
MfG Klaus
Die Kapazität der Leitungen liegt bei rund 1 pF / cm. Sehr schmale
Leiter auf der Platine auch schon mal nur 0,5 pF/cm.
Da sind Überraschend wenig Unterschiede zwischen Leitungen auf der LP ,
Flachbandkabel , Netzleitung oder Koax Kabel.