Forum: Mikrocontroller und Digitale Elektronik Wo sollen meine I2C-Widerstände platziert werden?


von Manuel N. (manuelambaum)


Angehängte Dateien:

Lesenswert?

Hi, ich habe einen I2C-Master und ca. 10cm entfernt einen I2C-Slave#0. 
Ca. 1 Meter entfernt befinden sich noch die Slaves #1, #2 und #3. Ich 
habe mir die frage gestellt, wie ich die Pullup-Widerstände am besten 
platziere, damit es für den Bus möglichst Vorteilhaft ist.

Und bevor jetzt jemand kommt und meint, der Master solle direkte neben 
die Slaves #1 bis #3: Ne das geht leider net. Und ja, habe die 
Datenübertragung schon erfolgreich über einen Meter übertragen können, 
jedoch in einem anderen Setup. Und ja, ich werde ein geschirmtes USB-C 
Kabel dafür verwenden, damit SDA und SCL möglichst voneinander 
ferngehalten werden.

Habe ein Bild angefügt mit drei denkbaren Varianten der I2C-Widerstände. 
Was bringt welche Vorteile? Oder ist es egal wie rum? Oder wäre eine 
Variante Sinnvoller, welche ich garnicht erst in Betracht gezogen habe?

Danke

: Verschoben durch Admin
von FPGA NOTFALLSEELSORGE (Gast)


Lesenswert?

Du kannst auch an den 4 Stellen (3 Slaves + 1 Master) jeweils den 
4-fachen Pullup Wert verbauen. Also z. B. 22 kOhm. Die ziehen dann 
parallel nach oben.

Sonst ist das recht unkritisch. Das sind ja nur 400 kHz.

von Manuel N. (manuelambaum)


Lesenswert?

FPGA NOTFALLSEELSORGE schrieb im Beitrag #7100971:
> Du kannst auch an den 4 Stellen (3 Slaves + 1 Master) jeweils den
> 4-fachen Pullup Wert verbauen. Also z. B. 22 kOhm. Die ziehen dann
> parallel nach oben.
>
> Sonst ist das recht unkritisch. Das sind ja nur 400 kHz.

Also ist 4x 22kOhm unkritischer wie 1x 5,5kOhm? Und aus welchem Grund?

von FPGA NOTFALLSEELSORGE (Gast)


Lesenswert?

Manuel N. schrieb:
> Also ist 4x 22kOhm unkritischer wie 1x 5,5kOhm?

Ich behaupte mal das ist egal. Wird Beides funktionieren. Das war nur 
ein Vorschlag wie du das auch machen kannst.

Manuel N. schrieb:
> Und ja, ich werde ein geschirmtes USB-C
> Kabel dafür verwenden, damit SDA und SCL möglichst voneinander
> ferngehalten werden.

Das ist I2C. Da ist nix Highspeed oder so. Du kannst ein ganz normales 
Kabel nehmen, nur genug Adern brauchst du eben. Ein Meter ist auch nicht 
viel.

Vorschlag:
Baue das erstmal schnell auf, einfach ein normales Kabel, nimm gerne 
auch gleich zwei Meter, und dann guck dir das Signal an. Wenn es doch 
schlecht aussieht dann kannst du Zeit für Verbesserungen investieren, 
wenn nicht hast du eine Lösung gefunden.

von W.S. (Gast)


Lesenswert?

Manuel N. schrieb:
> Hi, ich habe einen I2C-Master und ca. 10cm entfernt einen I2C-Slave#0.
> Ca. 1 Meter entfernt befinden sich noch die Slaves #1, #2 und #3.

Ich plädiere erstmal dafür, auf die LP, wo dein Busmaster drauf ist, die 
zwei Hochzieher zu plazieren. Das gibt bei nicht angeschlossenen 
Baugruppen auf alle Fälle ein NAK und kein versehentliches ACK.

Und wenn deine weiteren Slaves auf anderen LP sind, dann dort nochmal 
zwei Widerstände, die dann z.B. 33k oder mehr groß sein können, bloß 
eben, damit ohne Ansteuerung die beiden Signale nicht herumfloaten 
können. Es könnte ja eine Strippe und ein nicht gesteckter Stecker 
zwischen Master und Slaves sein.

W.S.

von Andreas B. (bitverdreher)


Lesenswert?

Manuel N. schrieb:
> Also ist 4x 22kOhm unkritischer wie 1x 5,5kOhm? Und aus welchem Grund?

Wenn man einen der Slaves mit 2x22k entfernt, hat man immer noch ca. 7k 
uebrig.
Aber am besten so machen, wie es von WS bereits beschrieben wurde.

von MaWin (Gast)


Lesenswert?

Manuel N. schrieb:
> Und ja, ich werde ein geschirmtes USB-C
> Kabel dafür verwenden, damit SDA und SCL möglichst voneinander
> ferngehalten werden.

USB-Adern sind verdrillt.
Das ist das Gegenteil von "voneinander fernhalten".

von Stefan F. (Gast)


Lesenswert?

MaWin schrieb:
> USB-Adern sind verdrillt.
> Das ist das Gegenteil von "voneinander fernhalten".

Man kann SDA und SCL mit jeweils einer Versorgungsader (GND oder VCC) 
verdrillen.

von Veit D. (devil-elec)


Lesenswert?

Manuel N. schrieb:
> Ich habe mir die frage gestellt, wie ich die Pullup-Widerstände am besten
> platziere, ...

Ganz einfach. Am Anfang und Ende der Leitung. Also am Master und am 
letztes Slave am Kabel.

von Fast DC (Gast)


Lesenswert?

Alter i2c ist fast dc. Am master ein paar pull up und gut is.

von DoS (Gast)


Lesenswert?

Aber es ist Open-Collector, was die Sache noch harmloser macht.

von DoS (Gast)


Lesenswert?

Wenn Du den Pullup an der Senderseite machst, dann leitest Du ein 
Spannungsppotential an den Empfänger. Wenn Du den Pullup an die 
Empfängerseite machst, dann leitest Du ein Stromsignal zum Empfänger, 
dass dann am Pullup über den Spannungsabfall ein Spannungssignal 
erzeugt.
Beim Clock ist alles klar. Beim Data ist die Lage bidirektional.
Gehen wird beides, solange Du die maximale Kapazität des Busses nicht 
überschreitest und du keine Loopantennen aufspannst und Deine Umhebung 
halbwegs ruhig ist (kein GaN, keine kA-Pukse).

von MaWin (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Man kann SDA und SCL mit jeweils einer Versorgungsader (GND oder VCC)
> verdrillen.

Und was soll das dann bringen?

von Stefan F. (Gast)


Lesenswert?

MaWin schrieb:
> Und was soll das dann bringen?

Dann stören sich die beiden Leitungen nicht gegenseitig. VCC und GND 
sind HF technisch neutral/ruhig.

von EAF (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> VCC und GND
> sind HF technisch neutral/ruhig.

Das ändert sich mit dem verdrillen.

von Jobst Q. (joquis)


Lesenswert?

Die meisten I2C-Module haben eh schon PullUps mit drauf, meist 10K. 
Damit ist die Gefahr, dass sie am Master fehlen, schon mal gebannt. 
Nichts spricht aber dagegen, am Master auch welche anzubringen.

Das Kabel sollte möglichst geringe Kapazitäten haben. Geschirmt oder 
verdrillt erhöht die Kapazität. Deshalb bevorzuge ich Modular Flachkabel 
und RJ10 als Stecker. Bewährt hat sich die Reihenfolge GND SDA VCC SCL. 
VCC trennt dabei SDA und SCL und versehentliche Richtungsvertauschung 
hat keine katastrophalen Auswirkungen.

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

MaWin schrieb:
> Stefan ⛄ F. schrieb:
>> Man kann SDA und SCL mit jeweils einer Versorgungsader (GND oder VCC)
>> verdrillen.
> Und was soll das dann bringen?

Das bringt eine möglichst hohe Kapazität, damit die Signalflanken nicht 
unnötig steil bleiben.

Jobst Q. schrieb:
> Die meisten I2C-Module haben eh schon PullUps mit drauf, meist 10K.
> Damit ist die Gefahr, dass sie am Master fehlen, schon mal gebannt.

Dafür die Gefahr, in Summe aller Module den Bus zu überlasten.

Das Ding heißt Bus ! An einem Bus hängen mehrere Geräte parallel, die 
Terminierung (Abschlußwiderstände) gehört an beide Enden und nicht 
irgendwo dazwischen.

Also Widerstände am Master - erstes Modul ohne - Leitung - zweites Modul 
ohne - drittes Modul ohne - viertes Modul mit Abschluß. Keine 
Sternverdrahtung, sondern von einem zum nächsten weiter. In der Praxis 
ist der Kram hoffentlich toleranter, aber es kostet auch nichts, das 
gemäß Lehrbuch zu schalten.

von testuser (Gast)


Lesenswert?

Manuel N. schrieb:
> Und ja, ich werde ein geschirmtes USB-C
> Kabel dafür verwenden

Stefan ⛄ F. schrieb:
> Man kann SDA und SCL mit jeweils einer Versorgungsader (GND oder VCC)
> verdrillen.

Kann man. Aber nicht nachträglich bei einem USB-C Kabel.

von Jobst Q. (joquis)


Lesenswert?

Manfred schrieb:
> Jobst Q. schrieb:
>> Die meisten I2C-Module haben eh schon PullUps mit drauf, meist 10K.
>> Damit ist die Gefahr, dass sie am Master fehlen, schon mal gebannt.
>
> Dafür die Gefahr, in Summe aller Module den Bus zu überlasten.

Kommt selten vor bei 10K. Es sind schon die Adresskonflikte, die zu 
viele  Module nicht zulassen. Und wenn man den Bus multiplext mit 
tca9548a, ist jeweils nur einer der Busse aktiv.

> Das Ding heißt Bus ! An einem Bus hängen mehrere Geräte parallel, die
> Terminierung (Abschlußwiderstände) gehört an beide Enden und nicht
> irgendwo dazwischen.

Die PullUp-Widerstände haben eine ganz andere Funktion als Widerstände 
zur Terminierung. Nicht für alles, was Bus heißt, gelten dieselben 
Bedingungen.


> Also Widerstände am Master - erstes Modul ohne - Leitung - zweites Modul
> ohne - drittes Modul ohne - viertes Modul mit Abschluß. Keine
> Sternverdrahtung, sondern von einem zum nächsten weiter.

In der Praxis ergibt sich eine Sternverdrahtung schon allein aus der 
räumlichen Anordnung von verschiedenen Modulen. Und macht eigentlich 
auch keine Probleme.


> In der Praxis
> ist der Kram hoffentlich toleranter, aber es kostet auch nichts, das
> gemäß Lehrbuch zu schalten.

Doch, wenn man aus einer räumlichen Sternschaltung eine elektrische 
Reihenschaltung machen will, braucht man Leitungen hin und zurück und 
verdoppelt damit nahezu Leitungslänge und deren Kapazität. Und 
Leitungskapazität ist die deutlichste Begrenzung von I2C.

von DoS (Gast)


Lesenswert?

Heureka!

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.