I have an issue I do not know how to resolve. Suppose you have two Arduino shields that you wish to use on one stack. If both shields contain an I2C device, but one board’s device is 5V and the other board’s device is 3V3, how do I resolve attaching the I2C devices to the Arduino’s I2C ports? I assume that one needs to convert the 3V3 levels to 5V. There is also the issue of the pull-ups on the SDA and SCL lines. Does each board have it’s own pull-ups?
You don’t need level converters - just use pullup resistors to 3.3V. The 5V device will still read the voltages as valid. The I2C bus is designed for multiple voltage levels. Just make sure you don’t accidentally set the 5V device’s pins as outputs and drive them high, as this would cause a large current to flow in the internal protection diodes in the 3.3V unit…