I2C Pull-Up Resistors – Solving Different Voltage for I2C Pull-Up Resistors

busi2cmicrocontrollerpower supplypullup

I am designing my own PCB (based on the STM32F4). I am communicating with some devices using I2C.

The thing is that this devices are connected to the I2C bus, which uses two 4.7 kΩ resistors (pull-ups) to +3.3 V. Now, I am adding a new device and the datasheet specifies +1,8 V to I2C. The power supply for this element is +1,8 V-GND too. What can I do?

enter image description here

Best Answer

  1. Check if your mysterious i2c chip tolerates 3.3v on SDA/SCL.
  2. Check if your mysterious STM32F4 variant can understand a VIH (input high voltage) of 1.8v (which I don't think it can, considering the image below and a supply of 3.3v). The image is from a random STM32F4 device:

STM32 IO characteristics

According to image above, with a supply voltage of 3.3v, the minimum understandable "hi" level would be 0.7*3.3 = 2.1v, way above 1.8v, so :

  1. If it's possible, reduce the IO voltage of STM32 to a lower value

  2. And finally, use a level shifter.