I'm using 100 kHz I2C for communication with 12 slaves. I found that MAX capacitance is about 400 PF. when I calculate the pull up resistor value, it looks like i can go mucher higher in capacitance. Is this correct?

Using 5V, and VOL = 0.4V for IOL = 3mA

Rmin=5V−0.4V /3mA = 1533 ohm This means I can go as low as 1533 ohm.

If C bus is 650pf

Rmax=1000ns/(Cbus*0.8473) = 1000ns/(650PF *0.8473) = 1800 ohm.

So If I choose a pull up resistor about 1.8K, It will satisfy BOTH Rmin and Rmax equitation. My Bus can handle up to 650 PF capacitance.

Is this correct or do I miss something? Why goes official specs for 100kHz maximum till 400 pf?

Thanks!! All Equitations comes from official I2C specs http://www.ti.com/lit/an/slva689/slva689.pdf

https://www.nxp.com/docs/en/user-guide/UM10204.pdf P55

(PS: The I2C devices I use can also handle up to 20mA IOL for VOL = 0.4V. This means that Rmin can be way lower; Rmin=5V−0.4V /20mA = 230 ohm. My bus can handle much more capacitance)

  • \$\begingroup\$ Just piling up references: Design calculations for robust I2C communications \$\endgroup\$ Nov 14, 2017 at 17:46
  • \$\begingroup\$ I have already read this. It does not answer my question :( \$\endgroup\$
    – Kono
    Nov 14, 2017 at 18:00
  • \$\begingroup\$ In Engineering there is a thing called "safe margins". If your calculations show that 1.8k pullup meets timing (Trise) margin even with 650pF load, it doesn't mean that all your other devices will reliably meet all other parameters at all process and temperature corners. \$\endgroup\$ Nov 15, 2017 at 0:30

1 Answer 1


Typically the pull up resistor for your bus is chosen depending on the bus capacitance. So higher the bus capacitance, you'll have to use a lower pull-up resistor. The criterion to be satisfied is that at the switching frequency, your pad should be able to charge to 90% of the rail voltage (which is a spec in i2c). The resistor pull-ups generally mentioned, correspond to different modes of operation of i2c.(like fast mode, fast mode plus, high speed mode). FM+ mode uses 1MHz signal and hence the resistor pull-up is calculated such that the bus is charged to rail voltage within 0.5us.

Now in your case, if you have a dc Iol requirement of 3mA @ Vol=0.4V then, it just means that you're supposed to be able to sink 3mA of current through the open drain transistor which you have. You may not need to worry about the drop across the pull-up resistor.

Also, I didn't get your Rmax calculation part, is it an equation mentioned in the i2c data sheet?

  • \$\begingroup\$ Please don't ask the OP any questions in your answer. That's what the comments section is for :) but good answer nonetheless +1 \$\endgroup\$
    – user103380
    Nov 14, 2017 at 17:27
  • 1
    \$\begingroup\$ Yes @KingDuken, I wish not to ask question in my answer, but Stackoverflow doesn't allow me to comment till my reputations is 50+ which is unruly. :) \$\endgroup\$ Nov 14, 2017 at 17:32
  • \$\begingroup\$ Yes, all calculation comes from the official specs! \$\endgroup\$
    – Kono
    Nov 14, 2017 at 17:33
  • 1
    \$\begingroup\$ ti.com/lit/an/slva689/slva689.pdf \$\endgroup\$
    – Kono
    Nov 14, 2017 at 17:33
  • \$\begingroup\$ The problem is official I2C spec for 100 kHz goes maximum till 400pf . However From my calculations, i can go up to 650 pf. \$\endgroup\$
    – Kono
    Nov 14, 2017 at 17:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.