Wie lang darf der I2C-Bus werden?

Hallo Uwe!

Wenn StevieL hier nachher reinschaut wird er sich bestimmt mal zu den 715ern äußern.

Also, jetzt sieht die Sache so aus, dass von jedem uC eine sehr kurze Lötbrücke von 2-5cm an den P82B715 geht. Ich muss also auch hier Pullups setzen?

Die Pullups benötigst du auf jeden Fall. Irgendwie musst du SDA und SCL doch High bekommen!
Im Datenblatt haben die doch extra zwei Rechenbeispiele dafür eingefügt....
Einmal nur ein Device:
1x I2C Device = 10pF
1x Stray = 10pF
1x 715er = 10pF
Sind zusammen 30pF..... also 33kOhm für den PullUp auf der Sx-Seite.


Auf Seite 5 steht extra noch der Hinweis, dass die Parallelschaltung aller PUllUps die Gesamtstromaufnahme von 30mA nicht überschreiten sollte.
Das nur noch mal als Hinweis zu dem vorgeschlagenen 1K Pullup auf der Lx-Seite!
Schließlich ist bei einer Parallelschaltung der Gesamtwiderstand immer kleiner, als der kleinste Teilwiderstand!

Grüße,
Cassio
 
Ist klar, nur wie kann ich dann das hier verstehen:

If P82B715 ICs are to be permanently connected into a system it could be configured with
only one pull-up resistor on the buffered bus and none on the I2C-buses....
 
Hallo Uwe,

also erstmal den kompletten Teil damit der Sinn bleibt ...
If P82B715 ICs are to be permanently connected into a system, the circuit may be configured with only one pull-up resistor on the buffered bus and none on the I2C buses, but the system design will be simplified and performance improved by fitting separate pull-ups on each section of the bus. When a sub-system using P82B715 may
Also man könnte theoretisch bei einem festen Einbau auf die PullUps auf dem normalen I2C-Abschnitt verzichten ... aber ...
für bessere Perfomrance und einfacheres Design sollte man jeden Bereich (also I2C und Buffered Bus) mit einzelnen PullUps beschalten.

Nun zu den PullUps.

Etwas weiter steht folgender Text ...
Calculating bus drive currents
Figure 4 shows three P82B715s connected to a common buffered bus. The associated bus capacitances are omitted for clarity but assume the resistors have been selected to give R-C products of less than 1 µs so the bus rise time requirement is satisfied. An I2C chip connected at I2C 1 and holding the SDA bus low must sink the current flowing in its local pull-up R1 plus, with assistance from the P82B715, the currents in R2, R3 and R4. Because the resistors R3 and R4 act to pull the bus nodes I2C 2 and I2C 3, and their corresponding Sx pins, to a voltage higher than the voltage at the Lx pins their buffer amplifiers will be inactive. The SDA at Sx of I2C 2 and I2C 3 is pulled low by the low at Lx via the internal 30 ohm resistor that links Lx to Sx. So the effective current that must be sunk by the P82B715 buffer on I2C 1, at its Lx pin, is the sum of the currents in R2, R3 and R4. The Sx current that must be sunk by an I2C chip at I2C 1, due to the buffer gain action, is 1/10 of the Lx current. So the effective pull-up, determining the current to be sunk by an I2C chip at I2C 1, is R1 in parallel with resistors 10 times the values of R2, R3 and R4.
Also muß der I2C-Pin des Controllers oder Slaves einen Pullup nach GND ziehen der aus dem eigenen und einem 10tel aller anderen parallelgeschalteten PullUps gleichkommt.

Und nun zu den Treiberströmen ...
Code:
To calculate the current sunk by the Lx pin of the buffer at I2C 1 note that the current in R1 is sunk directly by the IC at I2C 1. The buffer therefore sinks only the currents flowing in R2, R3, and R4 so the effective pull-up is R2 in parallel with R3 and R4
Also muß ein Lx-Pin des P82B715 den Strom von den parallelgeschalteten PullUps der anderen Zweige nach GND ziehen. Das darf maximal 30mA sein. Bei einer Toleranz von +/-10% darf also ein Gesamtwiderstand der PullUps aller anderen Zweige den Widerstand von 170 Ohm nicht unterschreiten. (Siehe Rechnung im Datenblatt)

Nun zu deiner Schaltung ...
Da deine P82B715 relativ direkt an den Controllern/Slaves hängen und nur etwas Platine dazwischen ist sollten da sehr wenig Kapazität auftauchen. Da brauchst du also nicht so kleine Widerstände. Nach Daumen, Gefühl und Beispielrechnungen aus dem Datenblatt würde ich da etwa 15..22kOhm verwenden. Nun zum eigentlichen Knackpunkt. Die Lx-Seite der Treiber. Also dein Kabel. Da hängt es stark vom Kabel ab was da benutzt werden muß. Miß am besten mal die Kabelkapazität und rechne dann mal grob nach den Beispielen im Datenblatt aus was man nehmen könnte. Das ist wohl im Moment das beste was ich dir empfehlen kann weil ich nicht weiß was da an Kabel in Verwendung ist.

Gruß
Dino
 
Hallo Uwe!

Darüber habe ich mich auch schon gewundert, wie die das meinen......
Irgendwie muss man ja schließlich die Spannung auf die Bus-Adern der Sx-Seite bekommen. :hmmmm:

Ich habe die 715er hier leider auch nur in SMD, sonst könnte ich das ja mal ausprobieren.


Grüße,
Cassio
 
Na eben, das sieht fast so aus, als ob die zwei Pullups in der L-Schleife die S-Schleife mitspeisen können. Ach man, ich liebe Datenblätter! So rosten die grauen Zellen wenigstens nie ein :) Ok, gehen wir mal von Pullups auf beiden Seiten aus. Um die Kapazität auf der S-Seite zu berechnen muss ich doch dann die vom 715er und die vom Atmega zusammenrechnen. Die 5cm-Lötbrücke würde ich jetzt nicht unbedingt in die Berechnung mit einbeziehen...

Ich hoffe nur, dass die Lötbrücken nicht zu Störungsquellen mutieren
 
Hi Uwe,

fertig mit essen und mein Beitrag ist nun auch fertig ;)
Sag mal etwas genauer was du für ein Kabel für die Verbindung verwenden willst ...

Na eben, das sieht fast so aus, als ob die zwei Pullups in der L-Schleife die S-Schleife mitspeisen können.
können sie da ein Stromsensor (30 Ohm) im Pfad drinliegt.
siehe ... Figure 2. Equivalent Circuit: One Half P82B715

Gruß
Dino
 
Dino, wenn die 715er drin sind, werd ich Flachbandkabel (CU 0,35mm2) verwenden, das sollte hinhauen. Das Kabel ist eh austauschbar, falls da was stören sollte. Mehr Sorgen mach ich mir um die Verbindungen von den Atmegas zum 715er. Ich kann den Chip sehr nahe neben den uC plazieren, nur muss ich die Verdrahtung zum Chip über Lötbrücken herstellen.
 
Dino, wenn die 715er drin sind, werd ich Flachbandkabel (CU 0,35mm2) verwenden, das sollte hinhauen. Das Kabel ist eh austauschbar, falls da was stören sollte. Mehr Sorgen mach ich mir um die Verbindungen von den Atmegas zum 715er. Ich kann den Chip sehr nahe neben den uC plazieren, nur muss ich die Verdrahtung zum Chip über Lötbrücken herstellen.
Dann nimm irgendwas zwischen 15k und 22k. Bei den kurzen Drähten zwischen Chip und Mega hast du doch kaum Kapazitäten.

Gruß
Dino
 
Hallo zusammen,

zu den P82B715 kann ich momentan nichts sagen, damit habe ich noch nicht gearbeitet. Nur mit den P82B96. Die verbaue ich mittlerweile standardmäßig in alle TWI-Master und Slaves.
 
Hallo zusammen,
ich hoffe, dass liest noch jemand hier :) Also, ich hab jetzt jeden uC und alle Nebenstellen mit nem 715er ausgestattet. Laut dem Datenblatt müßte die Kalkulation jetzt so aussehen:

uC-Strecke:

uC = 10pF
Strays = 10pF
715er = 10pF
Gesamt: 30pF
Pullup: 33kOhm

PCA-Strecke:

2x PCA9555N = 20pF
Strays = 20pF
715er = 10pF
Gesamt 50pF
Pullup: 20kOhm

So stehts zumindest in dem Rechenbeispiel. Kabel muss ich noch berechnen, wenn ich es angefertigt habe. Habt ihr den 3nF-Kondensator an der L-Strecke gesehen? Muss der an SDA und an SCL? Wieviel Spielraum ist eigentlich bei den Pullups? Ich würde z.B. statt 20k nen 22k nehmen, den hab ich hier.

Grüße, Uwe
 
Hi Uwe

Habt ihr den 3nF-Kondensator an der L-Strecke gesehen? Muss der an SDA und an SCL? Wieviel Spielraum ist eigentlich bei den Pullups? Ich würde z.B. statt 20k nen 22k nehmen, den hab ich hier.
der 3nF ist bestimmt kein Kondensator sondern soll lediglich die Kabelkapazität wiederspiegeln.
Wenn du statt der 20k nen 22k einsetzt wird das den Kohl auch nicht fett machen. Ich tippe mal das 10% Abweichung nicht wirklich kriegsentscheident sein werden.

Gruß
Dino
 
Dino, ich hab heute mal testweise die P82B715 angeklemmt und mit 400kHz und 100kHz vermessen. Kuck Dir mal die SCL-Kurve an. Kommt mir das nur so vor oder oder ist der Pullup zu hoch gewählt?

SCL-400kHz.gifSCL-100kHz.gif
 
Ok, ich denke, ich hab den Fehler. Es sind tatsächlich die Pullups. Hab die Berechnung von den 715ern mal ausser acht gelassen und ein bisschen rumexperimentiert. Letztendlich hab ich 10K-Pullups an alle Sektionen geklemmt und hier das Ergebnis dazu:

Fall-Time.gif

SCL-Testlauf 10k.gif

Rise-Time.gif

Sieht doch schon deutlich mehr nach Clock aus. Rise-Time liegt zwischen 820-900 nS, Fall-Time ist ideal. Ich würde sogar noch einen Tick niedriger gehen mit den Pullups, um die Rise-Time bei 500nS einzupendeln. 820-900 ist ja fast Grenzwert (1000nS). Gemessen wurde die Zeit zwischen 10%-90% Spannung
 
Jetzt siehts aus wie im Datenblatt. Nur die Pullup-Werte sind jetzt weit von den Beispielrechnungen im Datenblatt entfernt...

Atmega --> 715er = 10k
DS1307 --> 715er = 10k
Leitung 715er --> 715er = 1k


Rise-Time-1k.gif

Fall-Time-1k.gif

Clock-1k.gif
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)