Electronic – Interfacing with Low-Voltage ICM-20948 IMU chip

esp8266level-shifting

I am working with an ESP8266 and an ICM-20948 IMU chip. According to the datasheet, the IMU chip works on up to 3.6V VDD, but I/O voltage only goes up to 1.95V.

I thought about using resistors for stepping down 3.3V->1.8V for one way. However the ESP only recognizes a HIGH voltage level after 2.5V, so I cannot directly connect the other way and I need some sort of level shifter.

The connection is a 400 kHz I²C bus. I've heard that at this frequency, resistors should not be used for level shifting. Is this true, should I rather use a 1.8V regulator, and MOSFETs for the level shifting? The final PCB will be in a small handheld device, so I want to keep component count low for a small footprint.

Best Answer

For I2C bus level translation, you can't simply use resistors. You need a FET based translator or a chip that basically does the same, to allow translation between 3.3V and 1.8V devices, and pull-ups on each side to the respective supplies. You also need a 1.8V regulator to power the 1.8V VDDIO. You might as well use the 1.8V for the VDD too. Regulator can be powered from 3.3V.