Pull-up-Widerstandswert I2C; mehr als 400 pf Kapazität

Ich verwende 100 kHz I2C für die Kommunikation mit 12 Slaves. Ich fand heraus, dass die MAX-Kapazität etwa 400 PF beträgt. Wenn ich den Pull-up-Widerstandswert berechne, sieht es so aus, als könnte ich die Kapazität viel höher machen. Ist das richtig?

Unter Verwendung von 5 V und VOL = 0,4 V für IOL = 3 mA

Rmin = 5 V - 0,4 V / 3 mA = 1533 Ohm Dies bedeutet, dass ich bis auf 1533 Ohm gehen kann.

Wenn C-Bus 650pf ist

Rmax=1000ns/(Cbus*0,8473) = 1000ns/(650PF*0,8473) = 1800 Ohm.

Wenn ich also einen Pull-up-Widerstand von etwa 1,8 K wähle, erfüllt er sowohl die Rmin- als auch die Rmax-Gleichung. My Bus kann bis zu 650 PF Kapazität verarbeiten.

Ist das so richtig oder übersehe ich etwas? Warum gelten die offiziellen Spezifikationen für maximal 100 kHz bis 400 pf?

Danke!! Alle Equitations stammen aus den offiziellen I2C-Spezifikationen http://www.ti.com/lit/an/slva689/slva689.pdf

https://www.nxp.com/docs/en/user-guide/UM10204.pdf P55

(PS: Die von mir verwendeten I2C-Geräte können auch bis zu 20 mA IOL für VOL = 0,4 V verarbeiten. Dies bedeutet, dass Rmin viel niedriger sein kann; Rmin = 5 V − 0,4 V / 20 mA = 230 Ohm. Mein Bus kann viel mehr Kapazität verarbeiten.)

Einfach mal Referenzen anhäufen: Designberechnungen für robuste I2C-Kommunikation
Das habe ich bereits gelesen. Das beantwortet meine Frage nicht :(
In der Technik gibt es so etwas wie "sichere Margen". Wenn Ihre Berechnungen zeigen, dass 1,8k-Pullup selbst bei einer Last von 650 pF die Zeitspanne (Trise) erfüllt, bedeutet dies nicht, dass alle Ihre anderen Geräte alle anderen Parameter an allen Prozess- und Temperaturecken zuverlässig erfüllen.

Antworten (1)

Typischerweise wird der Pull-up-Widerstand für Ihren Bus abhängig von der Buskapazität gewählt. Je höher die Buskapazität, desto niedriger ist der Pull-up-Widerstand. Das zu erfüllende Kriterium ist, dass Ihr Pad bei der Schaltfrequenz in der Lage sein sollte, auf 90 % der Schienenspannung aufzuladen (was eine Spezifikation in i2c ist). Die allgemein erwähnten Widerstands-Pull-Ups entsprechen verschiedenen Betriebsmodi von i2c. (wie Schnellmodus, Schnellmodus plus, Hochgeschwindigkeitsmodus). Der FM+-Modus verwendet ein 1-MHz-Signal und daher wird der Widerstands-Pull-up so berechnet, dass der Bus innerhalb von 0,5 us auf die Schienenspannung geladen wird.

Wenn Sie nun in Ihrem Fall eine DC-Iol-Anforderung von 3 mA bei Vol = 0,4 V haben, bedeutet dies nur, dass Sie in der Lage sein sollen, 3 mA Strom durch den Open-Drain-Transistor zu leiten, den Sie haben. Sie müssen sich möglicherweise keine Gedanken über den Abfall am Pull-up-Widerstand machen.

Außerdem habe ich Ihren Rmax-Berechnungsteil nicht erhalten. Ist es eine Gleichung, die im i2c-Datenblatt erwähnt wird?

Bitte stellen Sie dem OP in Ihrer Antwort keine Fragen. Dafür ist der Kommentarbereich da :) aber trotzdem gute Antwort +1
Ja @KingDuken, ich möchte in meiner Antwort keine Frage stellen, aber Stackoverflow erlaubt mir keine Kommentare, bis mein Ruf 50+ beträgt, was widerspenstig ist. :)
Ja, alle Berechnungen stammen aus den offiziellen Spezifikationen!
Das Problem ist die offizielle I2C-Spezifikation für 100 kHz, die maximal bis 400 pf reicht. Aus meinen Berechnungen kann ich jedoch bis zu 650 pf gehen.
Danke Berkay, es sieht so aus, als hätten sie die Tr-Anstiegszeitspezifikation für ungefähr 10-90% in Betracht gezogen. In diesem Fall ist Ihre Formel sinnvoll. Wenn Ihre Buskapazität bis zu 650 pF betragen kann, müssen Sie einen niedrigeren Rpullup verwenden. Aber der Haken wäre, die Tfal Min- und Max-Spezifikationen bei der erwähnten Schaltfrequenz zu erfüllen.
Sie halten es von 30% bis 70%. Aber das ändert nichts. Die offizielle Spezifikation begrenzt die maximale Kapazität auf 400 pf. Das kann ich nicht verstehen. Was ist übrigens die Tfal?
Tfal ist die Abfallzeit am Bus, wobei die Tfal niedriger als 120 ns und höher als ein Wert sein soll, der im Datenblatt erwähnt wird (sie ist proportional zur externen Pull-up-Spannung). Auch in Bezug auf die 650pF denke ich nicht, dass dies ein Problem sein sollte, solange Sie in der Lage sind, die anderen für i2c erforderlichen Spezifikationen zu erfüllen (einschließlich tfall, Busspannung muss höher als 90% der Schienenspannung sein, niedriger als 10 % Schienenspannung). Indirekt haben Sie mehr Leistung, die Ihnen überlassen bleibt.
Tfal für 100 kHz beträgt 300 ns. Aber wie hängt das mit dem Pull-up-Widerstand zusammen? Die Rmin-Formel ist eine Formel, um sicherzustellen, dass das Gerät die Leitung auf LOW ziehen kann. Die Rmax-Formel ist die Formel, um die Linie unter Berücksichtigung des T-Anstiegs wieder auf hoch zu bringen. Ich habe T fal nirgendwo gesehen.
Ja, du hast Recht, mein Fehler. Tfal ist keine externe Spezifikation. Aber wenn die maximale Kapazität von 400 pF erwähnt wird, ist bekannt, dass die im Datenblatt genannten Tfal-Werte mit einer höheren Buskapazität verletzt werden. Dies liegt daran, dass der i2c unter Berücksichtigung der 400-pF-Kappe ausgelegt würde, die durch den Open-Drain-Transistor entladen wird (die Größe ist der Transistor / der Antrieb basiert darauf). Die höhere Cap-Last wirkt sich auf Ihre Lade- und Ruheströme und damit auch auf Ihren Stromverbrauch aus. Kurz gesagt, wenn Tfal oder Leistung für Sie kein großes Anliegen sind, sollte dies kein Problem sein.
Oh okey.. Also wird es mir unmöglich sein, über 400 pf hinauszugehen? (Repeater/Buffer zu verwenden ist keine Option für meine Anwendung)
Ich weiß nicht, ob ein Puffer ausreichen würde, aber Sie werden das Kapazitätsproblem lösen. Da das Signal am i2c-Ausgang ein langsam variierendes Signal (100 kHz) ist, kann es sein, dass Sie die T_on-Impulsbreite am Ausgang des Puffers variieren lassen. Wenn Sie mit einem verzerrten Tastverhältnissignal leben können, sollte es in Ordnung sein, nehme ich an.