Quick path
Use the I2C Pull-Up Resistor Calculator to calculate the resistor window. Then choose a standard value inside that window and verify the waveform at the farthest device on the bus.
How the window is formed
Rp(min) is set by the device that must pull SDA or SCL low: (VDD - VOL(max)) / IOL.
Rp(max) is set by rise time and bus capacitance: tr / (0.8473 * Cb). A usable passive
pull-up value must sit between those two limits.
Inputs that matter
- Bus capacitance: device pins, traces, connectors, cables, and probes all count.
- Rise time: choose the limit for the selected I2C speed mode.
- Sink current and VOL(max): check the weakest device that must pull the bus low.
Reading the result
A smaller resistor gives faster rising edges but requires more sink current when the line is low. A larger resistor reduces current but may fail the rise-time limit. The calculator suggests an E12 value near the middle of the valid window, not a guaranteed production value.
When to change topology
If no passive resistor fits, split the bus, reduce speed, lower capacitance, or add a buffer. For long cables, calculate first and still rely on scope measurements.
Board debug checklist
- Measure rise time at the farthest device, not only near the controller.
- Include pull-ups already present on sensor modules, level shifters, or evaluation boards.
- Recalculate after changing cable length, connector count, or bus speed.
Next step
Open the I2C Pull-Up Resistor Calculator with the measured capacitance and the speed-mode rise time, then compare the suggested value with the resistor values already installed on the board.