19 votos

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

¿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.

21voto

jason saldo Puntos 5036

Según versión 4 del \$\mathrm{I^2C}\$ spec ,

"Debido a la variedad de dispositivos de diferentes tecnologías (CMOS, NMOS, bipolar) que se pueden conectarse al bus I2C, los niveles de '0' (LOW) y '1' (HIGH) lógicos no son fijos y dependen del nivel de VDD asociado. y dependen del nivel asociado de VDD. Los niveles de referencia de entrada se fijan como 30 % y 70 % de VDD; VIL es 0,3VDD y VIH es 0,7VDD. Véase la Figura 38, diagrama de temporización. Algunos Los niveles de entrada de algunos dispositivos heredados se fijaron en VIL = 1,5 V y VIH = 3,0 V, pero todos los dispositivos nuevos requieren esta especificación de 30 %/70 %. requieren esta especificación de 30 %/70 %. Consulte las especificaciones eléctricas en la Sección 6". (página 9)

Profundizando en la especificación, verá que este \$ 0.7 \times V_{DD}\$ es el mínimo alta tensión lógica:

excerpt from NXP I2C spec rev. 4

Para tu sistema de 5V:

\$ 0.7 \times 5 V = 3.5 V\$

\$ 0.3 \times 5 V = 1.5 V\$

En mi opinión, el pull-up de 3,3 V parece marginal, especialmente si alguno de tus dispositivos de 5 V utiliza el "nuevo" estándar de \$ 0.7 \times V_{DD}\$ para lógica ALTA.

Tu opinión puede variar, pero siempre es mejor ajustarse a las especificaciones...

13voto

lillq Puntos 4161

La respuesta de Cees es incorrecta, en particular el "siempre" y el "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 indica Madmanguruman este es el estándar para I2C. 0,7 Vdd son 3,5 V a una alimentación de 5 V, por lo que 3,3 V ya es demasiado bajo.

Pero es aún peor. Los reguladores de tensión suelen tener una tolerancia del 5 % en su tensión nominal de salida, por lo que en el peor de los casos 5 V pueden ser 5,25 V, y entonces 0,7 Vdd se convierte en 3,675 V. Entrada mínima para un nivel alto. Si los 3,3 V tienen una tolerancia negativa del 5 %, entonces 3,3 V se convierten en 3,135 V. Así que, teniendo en cuenta las tolerancias, la entrada puede ser medio voltio demasiado baja, o el 15 %.

Así que..,

Así que no veo ninguna razón para un cambiador de nivel, siempre y cuando todos los dispositivos detecten el voltaje de los pull-ups (3,3V) como lógicamente alto. Ese debería ser el caso con los dispositivos que utilizan 5V como fuente de alimentación.

es una conclusión inoportuna. Comprueba siempre las hojas de datos y haz los cálculos.

3voto

Thomas Puntos 123

Esta es una pregunta bastante antigua, y ya se han debatido muchos puntos. Sin embargo, ninguna de las respuestas menciona la suposición incorrecta de que en I2C

los dispositivos sólo tirarán de las líneas (..) y nunca conducirán

De hecho, en uno de los modos I2C, el modo HighSpeed, el dispositivo maestro puede manejar activamente el bus, así que si estás considerando permitir la comunicación HS a través del bus, entonces mezclar voltajes puede ser una mala idea:

  • Los dispositivos IC de alta velocidad son compatibles a la baja, lo que permite sistemas de bus mixtos.
  • Para acortar el tiempo de subida de la señal, los dispositivos maestros en modo HS tienen una combinación de un pull-down de drenaje abierto y el pull-up de la fuente de corriente en la salida SCL.
  • Maestros de CI de alta velocidad puede suministrar corriente al bus que se denomina impulsar .
  • Esta fuente de corriente sólo está habilitada (!) durante el funcionamiento HS y sólo para un maestro.

La cita procede de una introducción al modo HS que acabo de aquí . Puntos destacados añadidos por mí.

-2voto

user6644063 Puntos 18

Creo que las otras respuestas no respondieron realmente a la pregunta de Jannis. Él 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 atados a 3.3V estará bien, por ejemplo, seguro para el dispositivo maestro, ya que los pines SDA/SCL sólo tirarán hacia abajo, como él mencionó. Tenga en cuenta que los esclavos y maestro tendrá que compartir una masa común (Vss pines equipotencial) con el fin de proteger el MCU de sobretensión, pero esto probablemente iba a ser el caso de todos modos. Así que el método de Jannis debería funcionar, sin un desplazador de nivel.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X