Problem Statement: Arduino UNO is the most prolific version of Arduino board, and runs at 5v DC. It’s I2C interface (Analog pins A4 and A5) will drive to 5v.Raspberry Pi runs at 3.3v. Both of it’s I2C interfaces run at 3.3v.I2C devices purchased through Sparkf
This is a companion discussion topic for the original entry at https://community.robotshop.com/blog/show/running-both-5v-and-3-3v-devices-on-i2c
It’s not that 5v device won’t sense 3.3v…
It’s not that 5v device won’t sense 3.3v, but rather a 3.3v device will not last for any great length of time on a 5v bus.
If, like me, you have chosen for one reason or another to purchase the lowly Arduino UNO, this becomes important… When using the UNO as an I2C Master, it drives the bus to 5v, even though it has a 3.3v regulator onboard.
most I2C devices are hearty enough to endure over voltage for a period of time, but early failure is definately a concern.
In the common case of I2C between Raspberry Pi and Arduino, it is typical that the PI (a 3.3v device) is master, and therefore drives the bus at 3.3v. This is a high enough signal that the 5v Arduino Slave device can read as a high. No harm, no foul.
In my particular case, I’m attempting to run my I2C bus in Multi-Master mode. A series of I2C devices, MOST are capable of 5v as they are either highly tolerant, or have a 3.3v regulator onboard… BUT, in this case, I now have a 3.3v PI as Master, collecting data for logistics and mapping, and a 5v Arduino as Master, collecting from these devices for trajectory and envirnment info.
This could possibly make the case for a second I2C bus, but I’ve chosen to use a single bus as both masters need the same info.