Doppelte Pull-Ups bei i2c?

OP #7541874
Lesenswert?

Moin!

Ich arbeite öfters mit I2C und weiß, das es auf die Pull-Ups drauf an kommt.

Nun stellt sich mir die Frage, ich habe ein STM32F407.... nutze von diesem den I2C Bus 100KHz Clockrate, nun habe ich an dem I2C Bus 1.8K auf SCL und 1.8K auf SDA zu VCC 3.3V, bei 100 KHz. (Master)

Ich möchte aber nun an den I2C Bus 5 weitere Platinen als Slave anschließen mit einem STM32F103.... über RJ45 Steckverbinder.

Müsste ich an den 5 Platinen jeweils auch immer 2 Pullups bestücken, oder reicht es, wenn das lediglich nur der Master hat?

Bin mir da etwas unschlüssig, aber wäre dann ja bei dem selben Bus, doppelt gemoppelt.. würde sich das auch negativ auswirken?

Grüße, Daniel

#7541885
Lesenswert?

Je mehr pull-ups, umso niedriger der pullup-widerstand (R-Parallelschaltung) - irgendwann kommt der Punkt, an dem die treiber-pins den Bus nicht mehr weit genug runter ziehen können, und es funktioniert nicht mehr.

Kommt auf den sink- Strom deiner Treiber an.

#7543113
Lesenswert?

Stephan S. schrieb:

In der I2C-Spezifikation (S. 47 und 55) steht mindestens 3 mA,

Mindestens muss der I2C-Baustein können, d.h. aber andererseits, dass man da drunter bleiben sollte. Also die PUs auf höchstens 3mA dimensionieren!

Und damit ist die Aussage von Clemens L. völlig richtig.

Jobst Q. schrieb:

Die meisten Fertigmodule haben PullUps von 10K. Davon kann man problemlos mehrere in einem Bus haben.

Mag ja noch gehen bei sehr kurzen Verbindungen. Ich selber würde trotzdem mindestens 1mA spendieren: bessere Flanken, bessere Störsicherheit. Also höchstens 3k3 in 3V3-Systemen bzw. 4k7 in 5V-Systemen.

#7543117
Lesenswert?

Wastl schrieb:

Und wer fragt heute noch in mikrocontroller.net wo man doch alles mit chatGPT erschlagen kann.

Kann man: "Ja, für eine I2C-Verbindung sollten Pull-up-Widerstände an jedem Bus verwendet werden, nicht an jeder Karte. Diese Widerstände sind wichtig, um die Datenleitungen auf ein definiertes logisches Niveau zu ziehen und Stabilität in der Kommunikation zu gewährleisten. Typischerweise werden Pull-up-Widerstände zwischen den SDA- und SCL-Leitungen und der Versorgungsspannung platziert."

#7544183
Lesenswert?

(prx) A. K. schrieb:

Wastl schrieb:

Und wer fragt heute noch in mikrocontroller.net wo man doch alles mit chatGPT erschlagen kann.

Kann man: "Ja, für eine I2C-Verbindung sollten Pull-up-Widerstände an jedem Bus verwendet werden, nicht an jeder Karte. Diese Widerstände sind wichtig, um die Datenleitungen auf ein definiertes logisches Niveau zu ziehen und Stabilität in der Kommunikation zu gewährleisten. Typischerweise werden Pull-up-Widerstände zwischen den SDA- und SCL-Leitungen und der Versorgungsspannung platziert."

"Erschlagen" ist da ein treffender Ausdruck.

Gast #7544191
Lesenswert?

Michael X. schrieb:

Nein, ein Satz Pullups genügt. Mit 1,8k bist du schon auf der sehr starken Seite.

Auf einer bereits gefährlich starken ...

Jan schrieb:

Je mehr pull-ups, umso niedriger der pullup-widerstand (R-Parallelschaltung) - irgendwann kommt der Punkt, an dem die

irgendwann kommt der Punkt, an dem jeder merkt, dass I2C für Chip-2-Chip Kommunikation ausgelegt ist, bei dem die Anzahl der Teilnehmer bekannt ist.

Bei Board-2-Board nutzt man keinen (aktiven) I2C-Bus sondern nur die Spannungen und geht an Ort und Stelle über einen Treiber.

Damit ist der Bus spannungssicher und stromunabhängig. Du brauchts nur einmal irgendwo einen Lastwiderstand gegen VDD und GND und nimmst so Stromeinkopplungen weg. (wegen du = R * di !)

Auf den boards baut man hinter dem Treiber sein eigenes maximal niederohmiges I2C-Netzwerk.

Gast #7544205
Lesenswert?

Klaus H. schrieb:

Also höchstens 3k3 in 3V3-Systemen bzw. 4k7 in 5V-Systemen.

... und mindestens 1k / 1,5k füge ich hinzu.

Das Interessante ist dann, wenn der Teilnehmer versucht, Clock-Stretching oder ähnliche Spässe zu machen und mit seinen 3mA maximum auf die manche Chips ausgelegt sind, gegen die vielen pulls kämpft.

OP #7544262
Lesenswert?

A.ndi F. schrieb:

Klaus H. schrieb:

Also höchstens 3k3 in 3V3-Systemen bzw. 4k7 in 5V-Systemen.

... und mindestens 1k / 1,5k füge ich hinzu.

Das Interessante ist dann, wenn der Teilnehmer versucht, Clock-Stretching oder ähnliche Spässe zu machen und mit seinen 3mA maximum auf die manche Chips ausgelegt sind, gegen die vielen pulls kämpft.

Warum das denn? meine 1.8K waren eigentlich schon laut Datenblatt falsch, denn im Datenblatt von meinem STM32F407 stehen 2x 4k7 Widerstände drin.

#7544369
Lesenswert?

Daniel S. schrieb:

meine 1.8K waren eigentlich schon laut Datenblatt falsch, denn im Datenblatt von meinem STM32F407 stehen 2x 4k7 Widerstände drin

Die Minimal- und Maximalwerte der I2C-Pullup-Widerstände berechnet man aus den Stromgrenzen und der Gesamtkapazität am Bus. Ich kann mir nicht vorstellen, dass das Datenblatt des STM32F407 4k7-Widerstände VORSCHREIBT. Wo soll das genau stehen?

LG, Sebastian

#7544503
Lesenswert?

(prx) A. K. schrieb:

Jobst Q. schrieb:

"Erschlagen" ist da ein treffender Ausdruck.

Inwiefern? Ist doch eine passende und korrekte Antwort.

"Ja, für eine I2C-Verbindung sollten Pull-up-Widerstände an jedem Bus verwendet werden, nicht an jeder Karte."

Das ist falsch. Mit PullUp-Widerständen an jeder Karte werden kapazitive und induktive Einstreungen auf die Leitung reduziert. Deshalb sind sie zu empfehlen.

#7544547
Lesenswert?

A.ndi F. schrieb:

irgendwann kommt der Punkt, an dem jeder merkt, dass I2C für Chip-2-Chip Kommunikation ausgelegt ist, bei dem die Anzahl der Teilnehmer bekannt ist.

Ka, die Anzahl sollte konstant sein.

Bei Board-2-Board nutzt man keinen (aktiven) I2C-Bus sondern nur die Spannungen und geht an Ort und Stelle über einen Treiber.

Das ist mir zu pauschal vereinfacht. Ich nutze Arduino und Boards mit z.B. D/A-Wandler oder Strommessung, läuft einwandfrei. Die liegen allerdings im selben Gehäuse, der gesamte I2C ereicht maximal 30cm - das finde ich unkritisch und dürfte im Rahmen seiner Spezifikationen bleiben.

Jobst Q. schrieb:

"Ja, für eine I2C-Verbindung sollten Pull-up-Widerstände an jedem Bus verwendet werden, nicht an jeder Karte."

Das ist falsch. Mit PullUp-Widerständen an jeder Karte werden kapazitive und induktive Einstreungen auf die Leitung reduziert. Deshalb sind sie zu empfehlen.

Ich denke auch, dass das nicht schadet. Es bleibt aber zu beachten, dass die Summe aller nicht zu niederohmig wird. In der Praxis bekommt man einen echten Bus mit Abschluß an den beiden Enden kaum umgesetzt, das wird eher ein Stern oder Baum.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren