I2C/The two wires/How big a pull-up

How big a pull-up

Too big a pull-up and the line cannot rise in time for the next clock. Too small and a chip cannot pull it down to a clean zero. The specification sets both limits, and a few kilohms sits between them.

A pull-up resistor charges the wire back up every time a chip lets go. The wire, and every pin on it, has capacitance, so the rise is a curve, not a step: the resistor times the capacitance, R·C, sets how long it takes.

Too big: a slow edge

The specification measures the rise from 30 % to 70 % of the supply, which takes 0.8473·R·C, and allows at most 1000 ns at 100 kHz and 300 ns at 400 kHz. With 100 pF of wire and pins:

Pull-upRise100 kHz400 kHz
2.2 kΩ186 nsyesyes
4.7 kΩ398 nsyesno
10 kΩ847 nsyesno
47 kΩ3982 nsnono

Longer wire, more pins, more capacitance, and the same resistor rises more slowly. The limit is 400 pF on each line; each chip's pin may add up to 10 pF of it.

Too small: no clean zero

A chip only promises to sink 3 mA while holding the line at 0.4 V or less. Against a small resistor that is not enough: the smallest pull-up that works on 3.3 V is (3.3 − 0.4) V ÷ 3 mA, about 970 Ω. With 470 Ω the chip can only get the line down to about 1.9 V, which a chip may well read as a 1.

What to fit

On a short bus at 100 kHz, 4.7 kΩ. At 400 kHz, 2.2 kΩ. Only one set per bus: the next lesson is what happens when every module brings its own.

Edit this page — content/fundamentals/i2c/pull-up-size.mdx

Discuss this article

Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.

Browse Fundamentals on the forum →