rftools.io

I2C Pull-Up Resistor Calculator

Calculate I2C pull-up resistor values for Standard (100 kHz), Fast (400 kHz), and Fast-Plus (1 MHz) modes. Derives minimum, maximum, and recommended resistance from supply voltage and bus capacitance per NXP UM10204.

Loading calculator...

Formula

R_{max} = \frac{t_r}{0.8473 \cdot C_{bus}}, \quad R_{min} = \frac{V_{DD} - V_{OL}}{I_{OL}}, \quad R_{rec} = \sqrt{R_{min} \cdot R_{max}}

Reference: NXP I2C-bus specification and user manual, Rev. 7.0 (UM10204), §7.1

R_{max}Maximum pull-up resistance (rise time limit) (Ω)
R_{min}Minimum pull-up resistance (sink current limit) (Ω)
R_{rec}Recommended pull-up (geometric mean) (Ω)
t_rMaximum rise time for speed mode (ns)
C_{bus}Total bus capacitance (pF)
V_{DD}Supply voltage (V)
V_{OL}Maximum output-low voltage (0.4 V) (V)
I_{OL}Sink current (3 mA std/fast; 20 mA fast-plus) (A)

How It Works

I2C bus communication relies on open-drain/open-collector drivers, which require pull-up resistors to establish the default HIGH state. These resistors are critical in determining signal integrity, rise time, and bus capacitance characteristics. The pull-up resistor must be carefully selected to balance two primary constraints: minimum current to guarantee logical HIGH state and maximum resistance to ensure rapid signal transitions. The calculation involves understanding the bus capacitance, supply voltage, and I2C mode-specific electrical parameters. Pull-up resistors create a current path that charges the bus capacitance, with the resistance value directly influencing signal rise time and noise immunity. Different I2C modes (Standard, Fast, and Fast Plus) have varying electrical specifications that impact resistor selection.

Worked Example

Consider a Fast Mode I2C bus with 5V supply and 100 pF total capacitance. First, calculate maximum resistance: t_rise is typically 300 ns, so Rmax = 300 ns / (0.8473 × 100 pF) = 3.55 kΩ. For minimum resistance, with 3 mA typical sink current and 5V supply: Rmin = (5V - 0.4V) / 0.003A = 1.53 kΩ. The recommended pull-up resistor is the geometric mean: √(3.55 kΩ × 1.53 kΩ) ≈ 2.4 kΩ. A standard 2.2 kΩ or 2.7 kΩ resistor would work well in this scenario.

Practical Tips

  • Use 1% tolerance resistors for consistent bus performance
  • Consider adding parallel termination for long bus traces
  • Measure actual rise time with oscilloscope to validate theoretical calculations

Common Mistakes

  • Using identical pull-up resistors for different I2C modes without recalculating
  • Neglecting total bus capacitance, including parasitic capacitance from long traces
  • Assuming linear relationship between resistance and rise time

Frequently Asked Questions

Why do I2C buses need pull-up resistors?

Pull-up resistors establish the default HIGH state in open-drain I2C bus configurations. They provide a current path to charge bus capacitance and ensure reliable logic signaling.

How does bus capacitance affect pull-up resistance?

Higher bus capacitance requires lower resistance to maintain fast rise times. Increased capacitance from longer traces or multiple devices will impact signal integrity.

Can I use the same pull-up resistor for all I2C modes?

No, different I2C modes (Standard, Fast, Fast Plus) have varying electrical characteristics that require recalculating pull-up resistance.

What happens if pull-up resistance is too high?

Excessive pull-up resistance causes slow signal rise times, potentially violating I2C timing specifications and causing communication errors.

How do I choose between multiple suitable resistor values?

Select the standard value closest to the calculated resistance, preferring lower values for faster rise times and higher noise immunity.

Shop Components

Affiliate links — we may earn a commission at no cost to you.

USB-UART Adapters

USB to serial bridge ICs for protocol debugging

Logic Analyzers

USB logic analyzers for capturing digital bus traffic

Related Calculators