I2C – Factors Affecting I2C Pull Up Resistor Values

i2copen-drainpullupresistorsvoltage

I was reading this Article regarding the pull up resistor calculation.

I understood that the value of the pull up resistors depend upon the currents, the supply voltage and the Logic Level voltages between the master and the slave. Is there anything else on which the resistor values depend upon?

I had this thought like, suppose in one configuration, the I2C Master is close to the slave. And in another configuration, the I2C master is away from the slave. So, in both the cases, would the pull ups be the same value ? If not, why?

Best Answer

In addition to the DC conditions you already mentioned, it also depends on how much there is bus capacitance and at what speed you want to communicate to determine how much current (or power) you want to spend to communicate at higher speeds.

And there is both maximum and minimum pull-up resistance range, as it can't be too low so that all devices on bus can sink enough current to pull the bus voltage low enough for all devices to reliably see a logic low level, while it can't be too high before DC leakage currents start to affect the bus high voltage.

Basically the distance between devices does not affect the pull-up values, but longer distance adds capacitance which you must charge fast enough to communicate at the speed you want so if you assumed short distance has small capacitance then larger distance has larger capacitance and then you may need to change pull-ups or communicate at slower speed.