I2C: ¿dispositivos de 3.3V y 5V sin cambio de nivel en el bus de 3.3V?


12

¿Realmente necesito una palanca de cambio de nivel si uso dispositivos alimentados por 5V en un bus I2C que tiene pull-ups a 3.3V? Según tengo entendido, los dispositivos solo tirarán de las líneas (SDA, SCL) hacia abajo (a tierra) y nunca conducirán su voltaje de suministro al bus. Por lo tanto, no veo una razón para un cambio de nivel siempre que todos los dispositivos detecten el voltaje de los pull-ups (3.3V) como lógicamente alto. Ese debería ser el caso con dispositivos que usan 5V como suministro.

En mi caso, tengo un IC cuyas entradas no son tolerantes a 5V como maestro y podría alimentar a mis esclavos con 3.3V, pero usar 5V es más fácil en mi circuito y permite velocidades de reloj (internas) más altas para los esclavos.


2
En resumen: - Ningún chip está en peligro cuando se usan dispositivos con 5 V como Vdd en un bus I2C que utiliza pull-ups a 3.3 V - Puede o no funcionar, dependiendo de las tolerancias, el diseño interno del chip, ...
Jannis

2
Correcto: sin peligro de daños, simplemente sin garantía de funcionamiento correcto.
Adam Lawrence

Respuestas:


15

De acuerdo con la versión 4 de la especificaciónI2C ,

"Debido a la variedad de dispositivos de tecnología diferente (CMOS, NMOS, bipolar) que se pueden conectar al bus I2C, los niveles lógicos '0' (BAJO) y '1' (ALTO) no son fijos y dependen de el nivel asociado de VDD. Los niveles de referencia de entrada se establecen como 30% y 70% de VDD; VIL es 0.3VDD y VIH es 0.7VDD. Consulte la Figura 38, diagrama de temporización. Algunos niveles de entrada de dispositivos heredados se fijaron en VIL = 1.5 V y VIH = 3.0 V, pero todos los dispositivos nuevos requieren esta especificación del 30% / 70%. Consulte la Sección 6 para ver las especificaciones eléctricas ". (página 9)

Más profundo en la especificación, verá que esta es el alto voltaje lógico mínimo :0.7×VDD

extracto de la especificación NXP I2C rev.  4 4

Para su sistema de 5V:

0.7×5V=3.5V

0.3×5V=1.5V

Para mí, el pull-up de 3.3 V parece marginal, especialmente si alguno de sus dispositivos de 5V usa el 'nuevo' estándar de para la lógica ALTA.0.7×VDD

Su kilometraje puede variar, pero siempre es mejor estar dentro de las especificaciones siempre que sea posible ...


Gracias por la limpieza stevenvh. Estaba corriendo ayer.
Adam Lawrence el

11

La respuesta de Cees es incorrecta, en particular el "siempre" y "cualquiera". Las E / S del microcontrolador pueden necesitar 0.6 Vdd como mínimo para un nivel alto, otras tienen un mínimo de 0.7 Vdd, y como Madmanguruman indica que este es el estándar para I2C. 0.7 Vdd es 3.5 V con un suministro de 5 V, por lo que 3.3 V ya es demasiado bajo.

Pero es aún peor. Los reguladores de voltaje a menudo tienen una tolerancia del 5% en su voltaje de salida nominal, por lo que en el peor de los casos, 5 V puede ser 5.25 V, y luego 0.7 Vdd se convierte en 3.675 V. Entrada mínima para un nivel alto. Si 3.3 V tiene una tolerancia negativa del 5%, entonces 3.3 V se convierte en 3.135 V. Por lo tanto, teniendo en cuenta las tolerancias, la entrada puede ser medio voltio demasiado baja, o 15%.

Entonces,

Por lo tanto, no veo una razón para un cambio de nivel siempre que todos los dispositivos detecten el voltaje de los pull-ups (3.3V) como lógicamente alto. Ese debería ser el caso con dispositivos que usan 5V como suministro.

Es una conclusión inoportuna. Siempre revise las hojas de datos y haga el cálculo.


-1

Siento que las otras respuestas realmente no respondieron la pregunta de Jannis. Preguntó sobre el uso de dispositivos de 5V en un bus de 3.3V (presumiblemente 3.3V MCU). Estoy de acuerdo en que tener los pull-ups vinculados a 3.3V estará bien, por ejemplo, seguro para el dispositivo maestro, ya que los pines SDA / SCL solo se desplegarán, como mencionó. Tenga en cuenta que los esclavos y el maestro necesitarán compartir un terreno común (equipotencial de pines Vss) para proteger la MCU de sobretensión, pero este probablemente sea el caso de todos modos. Entonces, el método de Jannis debería funcionar, sin un cambio de nivel.


2
¡¡Bienvenido!! Me di cuenta de que eres un nuevo contribuyente, por lo que es posible que no te hayas dado cuenta de que estás respondiendo una pregunta que tiene más de seis años. El sistema constantemente presenta viejas preguntas para que se revisen, debe tenerlo en cuenta.
Edgar Brown
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.