¿Necesito realmente un cambiador de nivel si utilizo dispositivos alimentados a 5 V en un bus I2C que tiene pull-ups a 3,3 V?
En mi opinión, los dispositivos sólo tiran de las líneas (SDA, SCL) a nivel bajo (a tierra) y nunca llevan su tensión de alimentación al bus. Así que no veo ninguna razón para un cambiador de nivel, siempre y cuando todos los dispositivos detecten la tensión de los pull-ups (3,3 V) como lógicamente alta. Ese debería ser el caso de los dispositivos que utilizan 5 V como alimentación.
En mi caso tengo un IC cuyas entradas no son tolerantes a 5 V como master y me podría alimentar mis esclavos con 3,3 V, pero el uso de 5 V es más fácil en mi circuito y permite mayores velocidades de reloj (interno) para los esclavos.