Interfacing 5V and 3V3 I2C busses

You can't connect a 5V I2C bus (e.g. an Arduino board) to a 3V3 I2C device (e.g. a Raspberry Pi) without damaging it, so in this situation you would need to its the 3.3V I2C bus to connect to a 5V I2C device.  This means no over voltage damage will occur, but this will only work properly if the 5V device I2C pins are specified as having a min high level voltage which is lower than 3.3V. To find this you need to look in the electrical characteristics section of the datasheet for the 5V part and you will often find the pins are specified with a min high level voltage of say 0.8Vss. If Vss = 5V then 0.8Vss = 4V so no-where near the 3.3V needed. You may find you can get it to work in practice, but you are operating well outside the specifications of the 5V device and it working will be down to luck and very bad electronic engineering on your part.  Murphys law says it will stop working just when you least expect it. No damage will be caused, but the 5V device will simply not see some or all of the high levels of the I2C bus, causing it to receive nothing or bad data.

Interface IC's

PCA9517A

Interfacing Using Mosfets

i2c_bus_interface_with_mosfets

Notes about this solution

Any I2C device pulling down its own bus must also be able ot sink the pull-up resistor current of the other bus.
The mosfets gates must be wired on the lower voltage supply side.
The mosfets must have a 'Vgs on' voltage specification which is less than the minimum supply voltage (BSN20 Vgs = 1.8V max)
If the 3.3V supply fails the 5V will remain operational. If the 5V supply fails the 3.3V bus will be clamped.

I2C Bus Switching

PCA9543

I2C Bus Extenders

P82B715

Up to 50m

 

 

USEFUL?
We benefit hugely from resources on the web so we decided we should try and give back some of our knowledge and resources to the community by opening up many of our company’s internal notes and libraries through mini sites like this. We hope you find the site helpful.
Please feel free to comment if you can add help to this page or point out issues and solutions you have found, but please note that we do not provide support on this site. If you need help with a problem please use one of the many online forums.