I2C Pull-Up Calculator
Rmin = (VDD − VOLmax) / IOL. 3.3 V, 0.4 V, 3 mA, 100 pF, 300 ns is 966.667 Ω–3.54066 kΩ.
Calculator
Formula
Minimum pull-up
Rmin = (VDD − VOLmax) / IOL Maximum pull-up (30–70 % rise)
Rmax = tr / (0.8473 Cb) Estimated 30–70 % rise
tre = 0.8473 Req Cb Variables
| Symbol | Meaning | Unit | Typical range | Precision | Default |
|---|---|---|---|---|---|
| VDD | Bus supply | V | ≥ 0 V Must be > VOLmax | 4 sig | 3.3 V |
| VOLmax | Low-level output (user/datasheet) | V | ≥ 0 V Table 10 VOL1 is 0.4 V at 3 mA when VDD > 2 V; override from the pin datasheet | 4 sig | 0.4 V |
| IOL | Low-level sink (user/datasheet) | A | ≥ 0 µA Table 10 IOL min is 3 mA (Sm/Fm) or 20 mA (Fm+) at VOL = 0.4 V; not a capability guarantee | 4 sig | 3 mA |
| Cb | Total bus capacitance | F | ≥ 0 pF Table 11 Cb max is 400 pF (Sm/Fm) or 550 pF (Fm+); not a clamp | 4 sig | 100 pF |
| mode | Speed mode (sets default tr) | — | — | 1 sig | fm |
| tr | Rise-time limit (Table 11 or custom) | s | ≥ 0 ns Sm 1000 ns, Fm 300 ns, Fm+ 120 ns from Table 11; custom overridable | 4 sig | 300 ns |
| Rmin | Minimum pull-up | Ω | — | 6 sig | — |
| Rmax | Maximum pull-up | Ω | — | 6 sig | — |
| Req | Enabled parallel equivalent | Ω | — | 6 sig | — |
| tre | Estimated 30–70 % rise | s | — | 6 sig | — |
| Isink | Low-state current at VOLmax | A | — | 4 sig | — |
| ok | Non-empty [Rmin, Rmax] interval | — | — | 1 sig | — |
Worked example
Fm 3.3 V, four 4.7 kΩ, 100 pF
Rmin ≈ 966.667 Ω, Rmax ≈ 3540.659 Ω. Req 1175 Ω, tre ≈ 99.55775 ns. Not a compliance certificate.
| Input | Value |
|---|---|
| VDD · Bus supply | 3.3 V |
| VOLmax · Low-level output (user/datasheet) | 0.4 V |
| IOL · Low-level sink (user/datasheet) | 3 mA |
| Cb · Total bus capacitance | 100 pF |
| mode · Speed mode (sets default tr) | fm |
| Output | Value |
|---|---|
| Rmin · Minimum pull-up | 966.667 Ω |
| Rmax · Maximum pull-up | 3.54066 kΩ |
| Req · Enabled parallel equivalent | 1.175 kΩ |
| tre · Estimated 30–70 % rise | 99.5578 ns |
| Isink · Low-state current at VOLmax | 2.468 mA |
Fm 3.3 V, 400 pF — empty window
Rmax ≈ 885.165 Ω < Rmin. No feasible interval. A nearby E24 is not Pass.
| Input | Value |
|---|---|
| VDD · Bus supply | 3.3 V |
| VOLmax · Low-level output (user/datasheet) | 0.4 V |
| IOL · Low-level sink (user/datasheet) | 3 mA |
| Cb · Total bus capacitance | 400 pF |
| mode · Speed mode (sets default tr) | fm |
| Output | Value |
|---|---|
| Rmin · Minimum pull-up | 966.667 Ω |
| Rmax · Maximum pull-up | 885.165 Ω |
| Req · Enabled parallel equivalent | 1.175 kΩ |
| tre · Estimated 30–70 % rise | 398.231 ns |
Two of four 4.7 kΩ enabled
| Input | Value |
|---|---|
| VDD · Bus supply | 3.3 V |
| VOLmax · Low-level output (user/datasheet) | 0.4 V |
| IOL · Low-level sink (user/datasheet) | 3 mA |
| Cb · Total bus capacitance | 100 pF |
| mode · Speed mode (sets default tr) | fm |
| Output | Value |
|---|---|
| Req · Enabled parallel equivalent | 2.35 kΩ |
| tre · Estimated 30–70 % rise | 199.116 ns |
Custom 1000 ns rise (Sm table value)
| Input | Value |
|---|---|
| VDD · Bus supply | 3.3 V |
| VOLmax · Low-level output (user/datasheet) | 0.4 V |
| IOL · Low-level sink (user/datasheet) | 3 mA |
| Cb · Total bus capacitance | 100 pF |
| mode · Speed mode (sets default tr) | custom |
| tr · Rise-time limit (Table 11 or custom) | 1 µs |
| Output | Value |
|---|---|
| Rmax · Maximum pull-up | 11.8022 kΩ |
| tre · Estimated 30–70 % rise | 99.5578 ns |
How it works
I2C SDA and SCL sit high through pull-ups and are pulled low by open-drain (or open-collector) drivers. Several modules can hang their own resistor on the same net, so the DC load is the parallel combination, not any one value.
This calculator applies NXP UM10204 Rev. 7.0 §7.1 and TI SLVA689A §2. Rmin is the resistor that still lets the pin reach VOLmax at the IOL you typed. Rmax is the resistor that still meets the 30–70 % rise limit for the bus capacitance you typed. The breadboard shows which module resistors are on; the curve marks 30 % and 70 % of VDD. It is not a lab capture and not a mixed-voltage safety certificate.
When Rmax is below Rmin, the page reports NO feasible interval. It will not promote the nearest E24 to Pass.
Pitfalls
- Treating a nearby E24 as Pass when Rmax is below Rmin. The window is empty; change Cb, IOL, or tr instead.
- Using Table 10 IOL as a guarantee that a mixed-voltage or Fm+ pin can actually sink that current.
- Leaving bus capacitance as a guess. Connector, cable, and pin Ci add to Cb and shrink Rmax.
- Assuming this page certifies a design. It applies the RC 30–70 % identities you entered; it does not replace the device datasheet.
FAQ
Why 0.8473 and not ln(7/3)?
UM10204 Rev. 7.0 §7.1 writes T = t2 − t1 = 0.8473 × RC for the 30 % to 70 % interval (t1 = 0.3566749 RC, t2 = 1.2039729 RC). The tool uses that factor exactly.
Can I override the Sm/Fm/Fm+ currents?
Yes. Mode only fills the Table 11 tr default. IOL and VOLmax stay whatever you type, including weaker GPIO than Table 10.
What if four modules are all 4.7 kΩ?
Req is 1175 Ω. At 100 pF that rise is about 99.56 ns, inside the Fm 300 ns limit.
Does a Fail window still plot the rise?
Yes. The curve uses the installed Req. Fail means the [Rmin, Rmax] interval is empty, not that the exponential disappeared.
Related
Sources
- NXP UM10204 I2C-bus specification and user manual Rev. 7.0 — 1 October 2021, §7.1 Pull-up resistor sizing, Equation (1)–(2), Table 10–11 (UM10204 Rev. 7.0) · retrieved
- TI SLVA689A I2C Bus Pull-Up Resistor Calculation, §2 Equations (1)–(6), Table 2-1 (SLVA689A) · retrieved