I2C Pull-up Resistor Calculator
Calculate optimal I2C pull-up resistor values based on bus capacitance and speed mode. Supports Standard, Fast, and Fast Mode Plus.
Calculator
Total SDA/SCL line capacitance
Vcc Vcc
│ │
┌┴┐ ┌┴┐
│ │ Rp │ │ Rp
└┬┘ └┬┘
│ │
SDA ─┼─────────────┼─ SCL
│ │
┌──┴──┐ ┌──┴──┐
│ │ │ │
│ IC1 │ │ IC2 │
│ │ │ │
└─────┘ └─────┘How to Use This Calculator
This I2C pull-up resistor calculator helps you find the optimal pull-up resistor values for your I2C bus based on bus capacitance, supply voltage, and speed mode requirements.
- Estimate Bus Capacitance — Sum of all device input capacitances plus trace/wire capacitance
- Enter Supply Voltage — Typically 3.3V or 5V
- Select Speed Mode — Standard (100kHz), Fast (400kHz), or Fast Mode Plus (1MHz)
- Click Calculate — Get the valid resistance range and recommended values
I2C Pull-up Formulas
Understanding the Constraints
- Maximum Resistance: Limited by rise time requirements. Higher capacitance needs lower resistance to meet timing specs
- Minimum Resistance: Limited by output sink current (Iol). Must not exceed the device's ability to pull the line low
- The 0.8473 factor: Derived from RC rise time to reach 0.7×Vcc (logic HIGH threshold)
I2C Speed Modes
| Mode | Max Frequency | Max Rise Time | Max Capacitance | Sink Current |
|---|---|---|---|---|
| Standard Mode | 100 kHz | 1000 ns | 400 pF | 3 mA |
| Fast Mode | 400 kHz | 300 ns | 400 pF | 3 mA |
| Fast Mode Plus | 1 MHz | 120 ns | 550 pF | 20 mA |
| High Speed | 3.4 MHz | — | 400 pF | Special |
Note: High Speed mode requires active pull-ups (current sources) rather than resistive pull-ups.
Estimating Bus Capacitance
Sources of Capacitance
- Device Input Capacitance: 3-10 pF per device (check datasheets)
- PCB Trace: ~1-2 pF/cm for typical trace widths
- Connector: 2-5 pF per connector
- Wire/Cable: 30-100 pF/meter depending on cable type
Example Calculation
3 devices on a 10cm PCB:
- 3 devices × 10 pF = 30 pF
- 10 cm trace × 1.5 pF/cm = 15 pF
- Total: ~45 pF (add 20% margin = 54 pF)
Frequently Asked Questions
Can I use different pull-up values for SDA and SCL?
Typically you use the same value for both lines. However, if one line has significantly different capacitance (e.g., longer trace), you could optimize each independently.
What if my calculated range is very small or invalid?
This usually means your bus capacitance is too high for the speed mode. Solutions: reduce the number of devices, shorten traces, use a bus buffer/extender, or drop to a slower speed mode.
Should I use the internal pull-ups on my microcontroller?
Internal pull-ups (typically 20-50kΩ) are usually too weak for proper I2C operation, especially at Fast Mode speeds or with any significant bus capacitance. Always use external pull-ups for reliable communication.
Where should I place the pull-up resistors?
Place pull-ups at the master device end of the bus, or as close to the master as practical. Use only one pair of pull-ups per bus, not one pair per device.
Verify Your Component Selections
After calculating your component values, use Schemalyzer to verify your schematic design. Our AI-powered analysis catches common errors and suggests improvements.
Try Free Schematic Review