What's new

Full changelogEngine 1.18.3

I²C Pull-up Sizing

Dividers & Interfacing

The allowed pull-up range, set by sink current and rise time, and the value to fit.

Inputs

V
≈ 10 pF per device + 0.5–1 pF per mm of trace
F
100 pF
UM10204 minimum at 0.4 V: 3 mA (Standard-mode, Fast-mode), 20 mA (Fast-mode Plus)
A
3 mA
V
A
10 µA

Results

1 passed
Recommended (E24)
1.8kΩ
Pass

Checked: Rp in 966.7 Ω … 3.541 kΩ (sink ≤ 3 mA; tr ≤ 300 ns) and idle level ≥ VIH 2.31 V, NXP UM10204

Minimum pull-up (sink limit) Rmin
966.7Ω
Maximum pull-up (rise-time) Rmax
3.541kΩ
Resulting rise time tr

limit 300 ns

153ns
All results (2)
Sink current when low

limit 3 mA

1.611mA
Static power (both lines low)
10.63mW
Allowed range: 966.7 Ω … 3.541 kΩ. Geometric centre 1.85 kΩ, nearest E24 value 1.8 kΩ.

Average switching current ≈ Cb·VDD·f = 132 µA, plus 1.611 mA while a device holds the line low.

tr = 0.847·R·Cb

Accuracy

Verified against

3 independent cases. See the working.

This is a design aid. The engineer remains responsible for the design and for checking the standard itself.

Parameter sweep

Vary one input over a range and see the answer and verdict at each step, as a table and a curve.Pro

Worst-case corners

Put a tolerance on each input and get the worst-case band around the answer.Pro

Circuit

The principle

I²C and SMBus are open-drain: devices only pull the line low, and the pull-up charges the bus capacitance to make the rising edge. Too large a pull-up gives a slow edge; too small, and the devices cannot sink its current.

Rise time (30 % → 70 % of V_DD)
tr=RpCbln⁡ ⁣(0.70.3)≈0.8473 RpCbt_r = R_p C_b \ln\!\left(\frac{0.7}{0.3}\right) \approx 0.8473\, R_p C_b
UM10204 measures tr from 0.3·VDD to 0.7·VDD, hence 0.8473 and not the 2.2 of a 10–90 % edge.
Maximum pull-up
Rp,max=tr,max0.8473 CbR_{p,max} = \frac{t_{r,max}}{0.8473\, C_b}
Minimum pull-up (sink capability)
Rp,min=VDD−VOLIOLR_{p,min} = \frac{V_{DD} - V_{OL}}{I_{OL}}
Idle high level with leakage
VH=VDD−IleakRp  ≥  VIH=0.7 VDDV_{H} = V_{DD} - I_{leak} R_p \;\geq\; V_{IH} = 0.7\,V_{DD}
  • RpR_ppull-up resistance, one on SDA and one on SCL
  • CbC_btotal bus capacitance: pins, traces and connectors
  • IOLI_{OL}sink current the weakest device guarantees at VOL
  • VOLV_{OL}low level guaranteed at IOL (0.4 V typical)
  • IleakI_{leak}total leakage of all devices on the line
  • VIHV_{IH}input high threshold
  • trt_rmaximum rise time for the bus mode
More detail

Estimating Cb

About 10 pF per device pin, 0.5–1 pF per mm of trace over a plane, and 50–100 pF per metre of cable. Test points and scope probes add more; a 10:1 probe is about 10 pF.

One pull-up pair per bus. Not one per device: pull-ups on several boards act in parallel and can exceed the sink limit.
Reference: NXP UM10204 I²C-bus specification and user manual, Rev. 7, §7.1 pull-up sizing; SMBus 3.x for the 4 mA sink variant.

Engine version ⁨1.18.3⁩