I²C Pull-Up Resistor Calculator

Optimal pull-up for bus speed and capacitance

Required Parameters

V
F

Waiting for input data...

Ad Placement
Sidebar Adaptive Ad Slot

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.