I²C Pull-Up Resistor Calculator
Optimal pull-up for bus speed and capacitance
Required Parameters
Waiting for input data...
Quick Answer
Min pull-up: Rp_min = (Vcc - Vol_max) / Iol (typically 3mA). Max pull-up: Rp_max = tr / (0.8473 × Cb). Standard mode 100kHz with 50pF bus: ~4.7kΩ.
Design Notes
I²C uses open-drain drivers. Pull-ups must source enough current to charge bus capacitance within the rise time spec. Lower resistance = faster rise time but more power. Higher resistance = less power but slower edges. For 400kHz Fast Mode, keep bus capacitance under 400pF. Use 2.2kΩ-4.7kΩ for most 3.3V designs.
Common Mistakes
- 1
Using 10kΩ pull-ups at 400kHz — too slow for the rise time requirement.
- 2
Forgetting to include all device and trace capacitance in the bus capacitance total.
- 3
Putting pull-ups on BOTH ends of a long cable — use only one set.
Knowledge Base
What value pull-up resistor for I²C?
Common values: 4.7kΩ for 100kHz Standard Mode at 3.3V, 2.2kΩ for 400kHz Fast Mode, 1kΩ for 1MHz Fast Mode+. The exact value depends on bus capacitance and supply voltage. Lower resistance = faster rise time but more power consumption. Calculate: Rp_max = rise_time / (0.8473 × Cb).
Why does I²C need pull-up resistors?
I²C uses open-drain/open-collector outputs. Devices can only pull the bus LOW — they cannot drive it HIGH. Pull-up resistors connect SDA and SCL to VCC, pulling the bus HIGH when no device is driving it LOW. Without pull-ups, the bus floats at an undefined voltage and communication fails.
How does bus capacitance affect I²C?
Every device, connector, and trace adds capacitance to the bus (2-10pF per device, ~1pF per cm of trace). Higher capacitance slows the rising edge (RC time constant). I²C specs limit bus capacitance: 400pF for Standard/Fast Mode, 550pF for Fast Mode+. Exceeding limits causes communication errors.
Can I use different pull-up voltages for 3.3V and 5V devices?
Use a level translator (like TXS0102 or PCA9306) between voltage domains. Never connect 3.3V device directly to a 5V I²C bus — it will damage the 3.3V device. Pull-ups go to the voltage of each bus segment. Some 3.3V devices are 5V-tolerant on I²C pins — check the datasheet.
Where should I place the pull-up resistors?
Place ONE set of pull-ups on the bus, typically at the master or near the middle of the bus. Do NOT put pull-ups at every device — they parallel and reduce total resistance, potentially exceeding the 3mA sink current limit. Exception: if using bus segments with repeaters, each segment needs its own pull-ups.
How many devices can I connect to one I²C bus?
Theoretically 128 (7-bit address) or 1024 (10-bit). Practically limited by: (1) Bus capacitance (400pF max standard). (2) Address conflicts. (3) Pull-up current capability. Typical practical limit: 8-15 devices. For more, use an I²C multiplexer (TCA9548A) to create separate bus segments.
Related Engineering Tools
555 Timer Calculator
Monostable and astable timing
UART Baud Rate Error Calculator
Clock divider and baud rate accuracy
ADC/DAC Resolution Calculator
LSB size, ENOB, and dynamic range
Crystal Oscillator Load Capacitor Calculator
External capacitor selection for crystal accuracy