Electronic – arduino – I2C 3.3 to 5.0 V conversion

arduinodigital-communicationsi2cvoltage

I'm trying to interface a 3.3V I2C device to a 5V Arduino.

I don't have any problem with SCL line.
I can use a simple voltage divider but I have an issue with the SDA line as this is bi-directional.

I'm not at all sure how to handle this. I have though of adding a pair of diodes, with a voltage divider on the slave input side and nothing extra on the master input.

Are there any other solutions?

Best Answer

Good document about the subject is Bi-directional level shifter for I2C-bus and other systems which uses a single mosfet as a bi-directional level shifter.