I2C Pullup bei vielen I2C Devices

OP #7623346
Lesenswert?

Hallo,

ich möchte an einen ESP32 mehrere I2C Bausteine dran hängen. Alle werden mit 3.3V betrieben.

Folgende Dinge hängen dran:

  • OLED 0.42"
  • 2 x I2C Multiplexer TCA9548 mit einmal 4 und einmal 5 INA219.
  • Gyroskop MPU6050
  • einzelner INA219

Welchen Widerstand sollte ich für SCL und SDA als Pullup verwenden? Und benötige ich extra Pullups nach dem Multiplexer und somit vor den ganzen INA219? Oder reicht einer sehr nah am ESP32?

Ich Danke euch.

OP #7623364
Lesenswert?

Ich habe keine Sternverkabelung, sondern auf dem PCB eine 0.3mm Leitung die über das Board geht und von da gehen immer kurze Wege (2-3cm) ab zu den einzelnen Komponenten.

gibt es irgendeine Formel um den Widerstand für Pullup zu berechnen? Oder sind die 47k i.O.?

P.S. alle Komponenten sind auch einem PCB. (also sehr kurze "Kabelwege")

#7623388
Lesenswert?

Jurgen H. schrieb:

Und benötige ich extra Pullups nach dem Multiplexer und somit vor den ganzen INA219?

Warum schaust du nicht im Datenblatt vom TCA9548 nach? https://www.ti.com/lit/gpn/TCA9548A Dort ist im Bild 13 gezeichnet, wie du ihn beschalten musst.

Und dann gibt es noch die I2C-Spec UM10204. Dort ist der Bereich für den Pullup angegeben, abhängig vom Mode, von der kapazitiven Last und der Betriebsspannung (Bilder 41 und 42).

OP #7623396
Lesenswert?

Wenn ich als Laie das richtig verstehe, benötige ich keine Pullups an den einzelnen Ausgängen des TCA9548A, da bei mir Vdpum = Vdpx = 3.3V ist. Sehe ich das richtig?

bei den Bildern 41 und 42 fehlt mir die Erfahrung um diese richtig zu interpretieren... Kann mir (als Laie) hier jemand auf die Sprünge helfen um rauszufinden welchen Widerstand ich direkt am ESP32 für die Pullups brauche?

Cyblord -. schrieb:

Warum rechnest du überhaupt damit?

Ich rechne nicht wirklich damit, da ich aber noch keine Erfahrung habe beim nutzen mehrere I2C Komponenten wollte ich das hier im Forum einmal nachfragen, da ich eben auch nicht weiß, wie groß der Widerstand für SDA uns SCL sein sollte.

#7623404
Lesenswert?

Viele Boards mit Sensoren haben oft schon Pullups drauf (meist 4k7), die musst Du natürlich berücksichtigen.

Ich habe keine Sternverkabelung, sondern auf dem PCB eine 0.3mm Leitung die über das Board geht und von da gehen immer kurze Wege (2-3cm) ab zu den einzelnen Komponenten.

Und wie gross ist das Board?

Moderator (Firma: Titel) Persönliche Seite #7623418
Lesenswert?

Jurgen H. schrieb:

Und benötige ich extra Pullups nach dem Multiplexer

Ich würde erwarten, dass das im Datenblatt dieses Bausteins stehen müsste. Und tatsächlich...

Jurgen H. schrieb:

Wenn ich als Laie das richtig verstehe, benötige ich keine Pullups an den einzelnen Ausgängen des TCA9548A, da bei mir Vdpum = Vdpx = 3.3V ist.

Woraus liest du das worin ab?

Sehe ich das richtig?

Auf der ersten Seite des DB steht: "External pullup resistors pull the bus up to the desired voltage level for each channel." Als muss explizit "each channel" für sich terminert werden.

Und auch bei den "Pin Functions" steht in jeder Zeile explizit: "Connect to VDPU through a pull-up resistor".

Jurgen H. schrieb:

bei den Bildern 41 und 42 fehlt mir die Erfahrung um diese richtig zu interpretieren...

Welches Datenblatt hast du da? Im Datenblatt https://www.ti.com/lit/ds/symlink/tca9548a.pdf ist auf Seite 26 beim Bild 20 Schluss...

Angehängte Dateien:
OP #7623441
Lesenswert?

Stephan S. schrieb:

Viele Boards mit Sensoren haben oft schon Pullups drauf (meist 4k7), die musst Du natürlich berücksichtigen.

Ich habe keine fertigen Boards, sondern die Module direkt auf einem PCB. Somit hat bei mir keines Pullups.

Stephan S. schrieb:

Und wie gross ist das Board?

Insgesamt ca. 12x10cm. Da ist aber auch noch der ESP32 mit drauf.

Lothar M. schrieb:

Und auch bei den "Pin Functions" steht in jeder Zeile explizit: "Connect to VDPU through a pull-up resistor".

Ok, also doch nach jedem Ausgang am Multiplexer noch zusätzlich Pullups.

Sehe ich es dann richtig, dass nach jedem Ausgang vom Multiplexer zu den INA219 Sensoren ein 4k7 Pullup für SCL und SDA passt?

Für den PullUp am ESP32, wo alle meine I2C Bausteine dran hängen komme ich leide nicht weiter. Da fehlt mir noch das wissen bzw. das geschrieben zu verstehen...

OP #7623469
Lesenswert?

Das verstehe ich ja, mir war aber nicht klar, dass hinter dem Multiplexer immer wieder ein "neuer" I2C Bus entsteht. Aber das habe ich verstanden und werden hinter dem Multiplexer für jedes angeschlossene Gerät ein paar Pullups einbauen.

Mein Hauptbus mit

  • OLED 0.42"
  • 2 x I2C Multiplexer TCA9548
  • Gyroskop MPU6050
  • einzelner INA219

bekommt auch ein paar Pullups, hier habe ich habe noch nicht verstanden welchen Wert diese Widerstände bekommen sollen?

#7623479
Lesenswert?

Jurgen H. schrieb:

Sehe ich es dann richtig, dass nach jedem Ausgang vom Multiplexer zu den INA219 Sensoren ein 4k7 Pullup für SCL und SDA passt?

Der passt dann, wenn für die gewählte I2C-Geschwindigkeit und die vorhandenen kapazitiven Lasten die Anstiegszeiten noch dem Datenblatt entsprechen - für die Sensoren und den Mux. Auch die Leitungslängen und eine eventuell störende Umgebung sollten mit einfließen.

In vielen Datenblättern und in der I2C-Spec sind die meisten Angaben für 3mA Strom durch den PU zu finden. Ganz so viel muss es nicht sein, aber unter 1mA würde ich nicht gehen.

Lothar M. schrieb:

Im Datenblatt https://www.ti.com/lit/ds/symlink/tca9548a.pdf ist auf Seite 26 beim Bild 20 Schluss...

Dort ist das Bild 13 zunächst mal interessant, wie ich schon schrieb. Und auch die Bilder 14-16. In der I2C-Spec dann die Bilder 41 und 42 für die Wahl des Widerstandswerts. In beiden Dokumenten ist auch ein Gleichung für Rp_min und Rp_max angegeben.

#7623851
Lesenswert?

Jurgen H. schrieb:

bekommt auch ein paar Pullups, hier habe ich habe noch nicht verstanden welchen Wert diese Widerstände bekommen sollen?

Warum willst Du EINEM Bus mehrere Pullups verpassen? Oder meinst Du mit "ein paar Pullups" vielleicht "ein Paar Pullups"? Kleiner aber feiner Unterschied ;-) Ein Paar pro I²C-Bus reicht (mit wenigen Ausnahmen) vollkommen aus.

Weiter oben wurden bereits sinnvolle Werte genannt:

Stephan S. schrieb:

47k sind sicher viel zu viel. Bei 3.3 Volt kann man insgesamt locker auf 1.5 bis 2 k runtergehen.

Cyblord -. schrieb:

Wenn dann 4k7.

Klaus liefert eine Erklärung für diese Werte:

Klaus H. schrieb:

In vielen Datenblättern und in der I2C-Spec sind die meisten Angaben für 3mA Strom durch den PU zu finden. Ganz so viel muss es nicht sein, aber unter 1mA würde ich nicht gehen.

Je mehr Geräte an demselben Buis hängen, desto größer wird die Lastkapaziät und desto kleiner müssen die Pullup-Widerstände werden. Du solltest allerdings noch kein Problem haben.

Mit anderen Worten: Mit 1k bis 10k bist Du vermutlich im grünen Bereich (UM10204, Grafik 41). Erst recht, wenn Du Dich auf den Kernbereich beschränkst und irgendwas so um die 2k-4k7 nimmst.

#7623857
Lesenswert?

Jurgen H. schrieb:

bei den Bildern 41 und 42 fehlt mir die Erfahrung um diese richtig zu interpretieren

Jurgen H. schrieb:

Mein Hauptbus mit

OLED 0.42" 2 x I2C Multiplexer TCA9548 Gyroskop MPU6050 einzelner INA219

bekommt auch ein paar Pullups, hier habe ich habe noch nicht verstanden welchen Wert diese Widerstände bekommen sollen?

Bild 42 sagt dir, dass die Pullup-Widerstände (bei 3V Busspannung) nicht kleiner als 1k sein sollen. Warum? Weil sonst in einen Busteilnehmer, der den Bus auf Low zieht, mehr als 3mA fließen würden.

Bild 41 sagt dir, dass die Pullup-Widerstände nicht größer als 10k (bei 100pF Gesamtlastkapazität) bzw. 5k (bei 200pF Gesamtlastkapazität) sein sollen.

Also such dir aus den Datenblättern der obigen Teilnehmer deines Hauptbus, und eventueller Kabel, die Einzellastkapazitäten heraus, addiere sie, und dann benutze Bild 41 (oder die darüber angegebene Formel) um die Maximalgröße der Pullup-Widerstände zu bestimmen.

Je kleiner die Pullups desto schöner die steigenden Flanken, aber desto mehr Strom fließt.

LG, Sebastian

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