The Pull-Up Window: Sink Current, RC Rise Time, and the Default Resistor

Ada re-derives the chapter’s pull-up window from the sink-current floor and the rise-time ceiling

foundations
math-foundations
i2c
networking-core
intermediate
Ada ADA · CALCULATION AUDIT

The Pull-Up Window: Sink Current, RC Rise Time, and the Default Resistor

I2C pull-ups are one electrical trade-off: the resistor must be large enough that devices can pull the line low, and small enough that bus capacitance charges before the next clock sample.

A 3.3 V I2C bus links a 3-device ESP32, BME280, and SSD1306 lineup over a 15 cm trace, and the chapter must pick one pull-up resistor that satisfies two opposing limits: a 3 mA sink-current floor at 0.4 V, and a rise-time ceiling for 400 kHz Fast mode. Its answer is the standard 4.7 kohm resistor, said to sit comfortably between a 967 Ω floor and a 6.68 kohm ceiling. This audit asks the question that window invites: do the sink-current floor and the Fast-mode rise-time ceiling really place 4.7 kohm inside a safe range for this bus?

Companion to the chapter I2C Protocol — every number here comes from that chapter.

Check the low-level current limit

1. Check the low-level current limit. The chapter uses a 3.3 V bus, a 0.4 V valid-low limit, and a 3 mA sink-current limit. The smallest safe pull-up is therefore:

Rmin = (3.3 V - 0.4 V) / 0.003 A = 966.7 ohm, so about 0.967 kohm

Rebuild the example capacitance

2. Rebuild the example capacitance. The listed example bus is an ESP32, a BME280, an SSD1306, and a 15 cm trace at 2 pF/cm:

Cbus = 10 pF + 5 pF + 8 pF + (15 x 2 pF) = 53 pF

Apply the Fast-mode rise-time budget

3. Apply the Fast-mode rise-time budget. For 400 kHz I2C, the chapter's maximum rise time is 300 ns:

Rmax = 300 ns / (0.8473 x 53 pF) = 6682 ohm, so about 6.68 kohm
Pull-up choice Arithmetic shown Audit result
1 kohm (3.3 - 0.4) / 1000 = 0.0029 A; 0.8473 x 1000 x 53 pF = 44.9 ns Fast enough, but close to the 3 mA sink-current limit.
2.2 kohm (3.3 - 0.4) / 2200 = 1.32 mA; 0.8473 x 2200 x 53 pF = 98.8 ns Safely inside the current and rise-time window.
4.7 kohm (3.3 - 0.4) / 4700 = 0.617 mA; 0.8473 x 4700 x 53 pF = 210.9 ns Inside the 0.967-6.68 kohm window, which supports the chapter's default.
10 kohm 0.8473 x 10000 x 53 pF = 449 ns Too slow for the 300 ns Fast-mode limit, but still below the 1000 ns Standard-mode limit.

What the calculation buys you: the 4.7 kohm default is not magic; it passes because this bus is short and about 53 pF. If capacitance rises toward 200 pF, the same resistor gives 0.8473 x 4700 x 200 pF = 796 ns, so 400 kHz becomes suspect even though 100 kHz may still work.

Every number above is taken from the chapter’s own pull-up example and re-derived step by step.