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-up | Rise | 100 kHz | 400 kHz |
|---|---|---|---|
| 2.2 kΩ | 186 ns | yes | yes |
| 4.7 kΩ | 398 ns | yes | no |
| 10 kΩ | 847 ns | yes | no |
| 47 kΩ | 3982 ns | no | no |
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.