Electronic – Multiple pull up for I2C pins

i2c

Some devices like MCU board or sensor module have the SCL, SDA pins internally pulled up. If you find that the pull up resistance has not been selected properly, how can you fix it without breaking the MCU or sensor?

  1. Is it okay to add pull up resistor externally? Assuming the external pull up voltage is same with the internal pull up voltage.

  2. What if the two voltage levels are different? Suppose that SCL pin is pulled up to 1.83V internally, but you pull it up again to 1.90V externally. Could MCU or sensor be broken? When the SCL is released, current would flow from the external resistor, internal resistor and then to the voltage regulator in your device. Could it affect to the power rail in your device?

Best Answer

It is typically acceptable to add an external resistor in all cases. Including when there is a small voltage mismatch. If you calculate the current from your example above, the MCU pull-up (assuming. 22k internal) would be dissipating \$ (1.90-1.83)^2/22k = 220nW\$.

With I2C the only real concern is that you have a range of pull-up resistance to handle the following two requirements:

  1. You provide enough current to quickly pull the line high (give it a good edge).
  2. You have enough resistance to prevent the devices internal transistors from overheating or not having enough conduction to pull the line low.

Keep in mind the total line resistance to Vcc will be the parallel combination of all pull-ups, internal and external.

Finally to address your question about effecting the power rail, assuming you have good power regulation, the difference in voltage should be dissipated across the resistance. If you have a high impedance source, you could see a small effect to the supply bus. Really this is application dependent.