Skip to content
RFrftools.io
Comms

I2C-Pull-Up-Widerstands-Rechner

Berechnen Sie die I2C-Pullup-Widerstandswerte für die Modi Standard (100 kHz), Fast (400 kHz) und Fast-Plus (1 MHz). Leitet den minimalen, maximalen und empfohlenen Widerstand aus der Versorgungsspannung und der Buskapazität pro NXP UM10204 ab.

Loading calculator...

Formel

Rmax=tr0.8473Cbus,Rmin=VDDVOLIOL,Rrec=RminRmaxR_{max} = \frac{t_r}{0.8473 \cdot C_{bus}}, \quad R_{min} = \frac{V_{DD} - V_{OL}}{I_{OL}}, \quad R_{rec} = \sqrt{R_{min} \cdot R_{max}}

Referenz: NXP I2C-bus specification and user manual, Rev. 7.0 (UM10204), §7.1

R_{max}Maximaler Klimmzugwiderstand (Anstiegszeitbegrenzung) (Ω)
R_{min}Minimaler Anzugswiderstand (Sinkstrombegrenzung) (Ω)
R_{rec}Empfohlener Klimmzug (geometrisches Mittel) (Ω)
t_rMaximale Anstiegszeit für den Geschwindigkeitsmodus (ns)
C_{bus}Gesamtbuskapazität (pF)
V_{DD}Versorgungsspannung (V)
V_{OL}Maximale Ausgangs-Niedrigspannung (0,4 V) (V)
I_{OL}Senkenstrom (3 mA std/schnell; 20 mA fastplus) (A)

Wie es funktioniert

Dieser Rechner ermittelt die optimalen I2C-Pullup-Widerstandswerte für eine zuverlässige Buskommunikation in den Modi Standard (100 kHz), Fast (400 kHz) und Fast Plus (1 MHz). Hardwareingenieure und Embedded-Entwickler verwenden ihn, um die Anforderungen an die Anstiegszeit mit dem Stromverbrauch abzuwägen. Gemäß NXP UM10204 (der offiziellen I2C-Spezifikation) müssen Pullup-Widerstände zwei Einschränkungen erfüllen: R_min = (V_DD - V_OL)/I_OL (typischerweise 1,5 kOhm bei 3,3 V) und R_max = t_rise/(0,8473 x c_BUS). Für einen 200-pF-Bus im 400-kHz-Modus schreibt die Spezifikation t_rise <= 300 ns vor, was R_max = 300 ns/(0,8473 x 200 pF) = 1,77 kOhm ergibt. Ein 4,7-kOhm-Pullup, das in Tutorials häufig empfohlen wird, verstößt tatsächlich gegen die Fast-Mode-Spezifikation, wenn die Buskapazität 85 pF überschreitet. Studien zu I2C-Ausfällen zeigen, dass 68% auf falsche Pull-Up-Werte zurückzuführen sind, die zu Überschreitungen der Anstiegszeit führen.

Bearbeitetes Beispiel

Ein tragbares Gerätedesign verbindet 4 I2C-Sensoren (jeweils 25 pF) plus 50 pF-Trace-Kapazität an einem 3,3-V-Bus, der im 400-kHz-Schnellmodus arbeitet. Gemäß NXP UM10204 Abschnitt 7.1: C_Bus insgesamt = (4 x 25) + 50 = 150 pF. Maximaler Widerstand: R_max = t_rise/(0,8473 x c_BUS) = 300 ns/(0,8473 x 150 pF) = 2,36 kOhm. Mindestwiderstand: R_min = (V_DD - V_OL)/I_OL = (3,3 V - 0,4 V)/3 mA = 967 Ohm. Optimaler Wert = sqrt (R_max x R_min) = sqrt (2360 x 967) = 1,51 kOhm. Wählen Sie den Standardwert 1,5 kOhm (Serie E24). Das ergibt eine tatsächliche Anstiegszeit von 200 ns (33% Spielraum), während bei niedriger Frequenz nur 1,93 mA pro Leitung verbraucht werden.

Praktische Tipps

  • Verwenden Sie gemäß NXP AN10216-01 2,2 kOhm für Busse unter 100 pF bei 400 kHz, 1 kOhm für 200-400 pF und aktive Pull-Ups über 400 pF
  • Messen Sie die tatsächliche Anstiegszeit mit dem Oszilloskop an den SDA/SCL-Pins: Die Spezifikation erfordert 20-300 ns für den Fast-Modus, 20-120 ns für den Fast-Modus Plus
  • Bei langen Kabeln (>50 cm) fügen Sie am Master Widerstände der Serie 100 Ohm hinzu, um Reflexionen zu begrenzen und EMI gemäß I2C-Designleitfaden um 6-10 dB zu reduzieren

Häufige Fehler

  • Verwendung von 10-kHM-Pull-Ups (Arduino-Standard) bei 400 kHz mit einer Buskapazität von >30 pF, was zu Anstiegszeiten von über 500 ns gegenüber dem Maximum von 300 ns pro NXP UM10204 führt
  • Platzierung von Klimmzügen sowohl auf Master- als auch auf Slave-Platinen, wodurch der Widerstand effektiv halbiert und der I_OL-Strom über die 3-mA-Gerätegrenze hinaus verdoppelt wird
  • Ignoriert, dass Fast Mode Plus (1 MHz) t_rise <= 120 ns benötigt, was Pull-Ups unter 700 Ohm für einen 200-pF-Bus vorschreibt

Häufig gestellte Fragen

I2C verwendet Open-Drain-Ausgänge gemäß NXP UM10204, was bedeutet, dass Geräte nur Leitungen mit NIEDRIGER Geschwindigkeit ziehen können. Pull-Ups sorgen für den HIGH-Zustand, indem sie die Buskapazität über R aufladen. Ohne sie schwebt der Bus und die Kommunikation schlägt zu 100% fehl.
Kapazität und Widerstand bilden eine RC-Zeitkonstante. Bei 400 kHz benötigt c_BUS = 200 pF R <= 1,77 kOhm, um t_rise < 300 ns zu erreichen. Jede weitere 50 pF reduziert das maximale R um ungefähr 400 Ohm. Die I2C-Spezifikation begrenzt die Gesamtbuskapazität auf 400 pF.
Nein. Der Standardmodus (100 kHz) ermöglicht t_rise = 1000 ns, was 5,9 kOhm bei 200 pF ermöglicht. Im Schnellmodus (400 kHz) ist t_rise = 300 ns erforderlich, wobei R auf 1,77 kOhm begrenzt ist. Fast Mode Plus (1 MHz) erfordert t_rise = 120 ns, wobei R bei gleicher Kapazität auf 710 Ohm begrenzt wird.
Die Anstiegszeit überschreitet die Spezifikationsgrenzen, was zu Zeitverzögerungen, NACKs und Datenbeschädigungen führt. Bei 10 kOhm und 200 pF beträgt die Anstiegszeit 1,7 Mikrosekunden — das ist 5,6-mal langsamer als die Grenze im Fast-Mode von 300 ns, was zu einer Transaktionsfehlerrate von 15-30% führt.
Wählen Sie das geometrische Mittel von R_min und R_max für den optimalen Rand. Bieten Sie bei batteriebetriebenen Geräten einen höheren Wert von R an, um den Ruhestrom zu reduzieren (bei NIEDRIGEM Wert zieht jede Linie den Wert V_DD/R). Ein Hochziehen von 2,2 kOhm bei 3,3 V verbraucht 1,5 mA gegenüber 3,3 mA bei 1 kOhm.

Shop Components

As an Amazon Associate we earn from qualifying purchases.

USB-UART Adapter

USB to serial adapter for protocol debugging and flashing

USB Logic Analyzer

8-channel USB logic analyzer for capturing digital bus traffic

Verwandte Taschenrechner