The Pull-Up Window: Sink Current, RC Rise Time, and the Default Resistor
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
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.
See the relationship before changing it
The figure reads from left to right. The blue card is pull-up resistance. The middle card applies this page's rule. The green card is bus rise time. Walk the arrows once: set the input, apply the rule, then read the result with its unit.
The retained audit below checks several chapter fixtures. This model keeps those stated values fixed and changes only pull-up resistance, so the numeric fixture does not switch without explanation.
Derive the baseline in four named moves
- 1
Name the input. The chapter baseline is 4.7 kOhm.
- 2
Name the relationship. rise time = 0.8473 x resistance x 53 pF
- 3
Substitute with units. 0.8473 x 4,700 ohm x 53 pF = 211.1 ns
- 4
Read the result. Keep the unit beside the value. Use it only inside the technical boundary on this page.
Predict, then change pull-up resistance
Try Predict the direction of rise time = 0.8473 x resistance x 53 pF. Test another pull-up resistance, then compare bus rise time.
Observe A weaker pull-up raises the RC rise time and approaches the Fast-mode timing ceiling. Reset pull-up resistance to 4.7 and compare bus rise time.
Explain A weaker pull-up raises the RC rise time and approaches the Fast-mode timing ceiling.
Check yourself
What should you do before trusting a moved-control result?
What does this small model leave out?
Use Vbus = 3.3 V, VOL = 0.4 V, Isink = 3 mA, and Cbus = 53 pF to calculate the pull-up resistance window at 400 kHz.
The electrical bounds are about 0.967–6.68 kΩ; 4.7 kΩ produces a 210.9 ns rise, whereas 10 kΩ stretches it to 449 ns and fails the 300 ns Fast-mode limit.
A stronger pull-up accelerates the RC rise but demands more low-level sink current, so valid I²C values lie between those opposing electrical constraints.
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:
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:
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:
| 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.
Technical boundaries: This lumped-capacitance RC check omits distributed trace effects, connector and probe capacitance, device leakage, level shifters, bus-voltage variation, clock stretching, ringing, crosstalk, and VOL spread.