Electronic – 3.3V I2C Logic on 1.8V Device

i2cpulldownpullupserial-bus

I have designed a board with the ICM-20789, but am having trouble keeping stable voltage values on the I2C bus. Datasheet

I have followed the schematic that was listed inside the datasheet, and that is pictured below. I have a 5V ATMega32u4 that is acting as the master and for this reason, I wanted to run the device at 3.3V logic on I2C.

enter image description here

I have listed my schematic and board layout below as well.
enter image description here

The issue I am having is with the I2C bus and 1.8V line not being the correct voltage. (The lines I am referring to are highlighted in my schematic.)

When using 10K pullup resistors for the I2C line and a 10K resistor for R6 in the datasheet and R15 in my schematic, the voltage regulator runs at a perfect 1.8V, but the I2C lines are running at 2.5V, to low for the ATMega32u4 to read as a logic high. (3.0V when running at 5V).

When I replace the I2C pullup resistors with a 4.7K resistor, then the voltage I2C lines run at above 3V, but the 1.8V is now at 2.1V.

I then trying using 4.7K resistors on the I2C bus, and a 1K resistor for the pull down on the regulator. Again, I have the issue where the regulator gives a perfect 1.8V, but the I2C voltage is to low.

It appears the schematic is saying that it is possible to run the device at 3.3V logic, but I cannot seem to get it working. Any ideas as to why this is happening and how to fix it would be greatly appreciated!

Best Answer

It's possible there is an error in the datasheet and the SCL/SDA and INT pins should not be pulled above VDDIO because of protection diodes. That would exactly explain the symptoms you are seeing. The datasheet refers to pullups to VDDIO (which, as you know, is limited to about 2V) in several places.

I suggest you contact the manufacturer and confirm. To get this to work, assuming I'm right, you'll have to add voltage translators such as the PCA9306 between the MCU and the chip, as shown in the schematic Figure 7. The INT line will also need voltage translation.