Tolerancia de 5V del pin de SALIDA de 3.3V

Supongamos el siguiente escenario:

  • uC (@3.3V VDD) impulsa un pin de E/S HIGH 3.3V (para que quede claro, no es un pin de drenaje abierto, por lo que el mosfet del canal p del pin de salida en realidad está conduciendo el pin al nivel de VDD)
  • El pin también está clasificado como una entrada tolerante a 5 V (por lo que no está sujeto a VDD).
  • La línea que conduce el pin también está conectada a un pin de otro uC (@ 5V VDD) que también puede conducir la línea al nivel de 5V
  • Entre los dos pines de los diferentes uC asumimos una resistencia de ~2470R

Las preguntas son:

¿Qué sucede si mientras el uC de 3,3 V impulsa la línea ALTA (3,3 V), el otro uC también intenta impulsar la línea ALTA (5 V)? Entonces, ¿qué se puede afirmar sobre la tolerancia de 5V del pin de SALIDA uC de 3.3VDD?

¿Es entonces una corriente de 680uA ((5 - 3.3) / 2470) hundida en el VDD del 1er uC? ¿Qué sucede realmente dentro del circuito de pines de E/S del primer uC? ¿Es segura esta interconexión?

Publico esta pregunta en caso de que alguien con una mejor comprensión quiera responder, ya que este caso no está documentado en la hoja de datos de uC y no pude encontrar ninguna referencia definitiva sobre esto después de investigar un poco.

¿Por qué se permite que los dos pines de salida impulsen activamente una señal en primer lugar?
Bueno, esto está en un bus I2C y un convertidor de nivel bidireccional no es una opción (debido a otras limitaciones)
I2C es de drenaje abierto, por lo que no debería tener dos salidas que lo controlen activamente. Deshabilite uno de los pull-ups.
Lo formulé mal y ahora no puedo editar el comentario debido al límite de 5 m. Déjame intentarlo de nuevo: Bueno, el pin de salida de 3.3V actúa como un pull-up (a través de 2 resistencias) para las líneas I2C de un bus, y el pin de salida de 5V en el otro uC está conectado a SCL o SDA de este bus. El pin de salida de 5V uC es parte de una implementación anterior en la que se usaba un protocolo de bus diferente. Este pin puede conducir todo el bus directamente a 5V (no de drenaje abierto a través de la resistencia pull-up). También se debe mencionar que no es posible usar un convertidor de nivel bidireccional (debido a otras limitaciones).
Independientemente de la motivación, es una pregunta interesante que yo también me he hecho.
Es por eso que he tratado de sacarlo de contexto, porque realmente quiero entender qué sucede en ese caso, ya que la documentación que cubre esto parece ser escasa. Y la mayoría dice que no debe hacer eso, pero no explica (o no se entiende) los detalles subyacentes.
@IgnacioVazquez-Abrams Porque a veces ocurren errores. Por mi parte, también me gustaría saber los detalles de lo que sucede en este caso. Considéralo un hipotético.
¿Puede consultar una hoja de datos?
Calificaciones máximas absolutas para un estado AVR arbitrario: Voltage on any Pin except RESET with respect to Ground ... -0.5V to VCC+0.5Vy DC Current per I/O Pin ... 40.0mA. Eso implicaría que no debe obtener una salida superior a Vcc + 0.5V, probablemente limitada por el diodo de protección interno y limitada a un máximo de 40 mA, nuevamente la corriente a través de ese diodo de protección interno. Pero no estoy del todo seguro de si así es como funciona, por lo tanto, un comentario y no una respuesta.
En general, no creo que se pueda afirmar que una entrada tolerante a 5V pueda soportar 5V cuando se configura como una salida . Normalmente, ningún dispositivo impulsa activamente las líneas de autobús. Existen los pull-ups externos 4k7 para hacer eso. Entonces, la solución limpia es no generar un nivel alto en ninguno de los dispositivos, sino usar solo una salida baja (para 0) o tres estados del pin (para 1). La configuración triple de un pin a menudo equivale a reconfigurar el pin como una entrada , en cuyo caso no debe 'empujar' ni 'tirar' de las líneas de bus.
El "cambio de nivel" se puede lograr con solo dos FET, por cierto: letsmakerobots.com/node/34444
¿No es esta pregunta demasiado amplia? Al final, depende totalmente de la implementación del circuito dentro de los controladores. Entonces, sin el tipo de hoja de datos / controlador, todo es especulación.
Creo que tienes razón en la amplitud de la pregunta. Me refiero a un STM8L151R6 uC. El manual de referencia incluye un esquema de pines de E/S, sin embargo, no detalla este escenario. Si revisa el esquema citado, verá el mosfet de lado alto (búfer de canal p). Lo que sospecho que está sucediendo es que la corriente de 680uA descrita anteriormente se hunde a través del mosfet del lado alto (a través del diodo intrínseco del MOSFET - unión pn) a VDD.

Respuestas (2)

En el sentido más abstracto, lo que sucede es esto:

esquemático

simular este circuito : esquema creado con CircuitLab

Tienes una diferencia de 1.7V a través de 2.47 k Ω , y así fluye una corriente de alrededor de 0.69 mA de V2 a V1.

La línea no se sumerge en un estado claramente definido. A la izquierda de R1, el nivel es lo que sea que esté emitiendo V1. A la derecha, el voltaje el de V2. En todo el cuerpo de R1, hay una mezcla de V1 a V2. Obviamente, este probablemente no sea un comportamiento útil para los circuitos digitales donde queremos un nivel lógico definido en una línea de señal dada: el mismo nivel en ambos lados de cualquier resistencia.

El peor caso de corriente de alrededor de 2 mA ocurre cuando V1 se reduce y V2 está a 5V. Desde la perspectiva de V2, solo conduce un 2.47 k Ω resistencia a tierra, pero V1 tiene que absorber la corriente. En el caso contrario, V2 tiene que absorber algo menos de corriente de V1.

Entendí que la pregunta era "¿qué sucede dentro de la uC?"

No creo que encuentres una especificación sobre esto. Algunos controladores pueden absorber (y generar) más corriente que otros. Algunos están protegidos y otros no. Depende de los tipos utilizados por los diseñadores de matrices. Para ahorrar dinero, algunas versiones del mismo IC pueden tener diferentes controladores a lo largo de sus ciclos de producción.

La corriente de 680uA intenta hundirse en el VDD del 1er uC. Lo que sucede depende del tipo de controladores de salida en la matriz. Algunos controladores tienen cierta protección de voltaje inverso que se retroalimenta al suministro del circuito del troquel, algunos controladores de salida no la tienen y pueden fallar.

En un controlador protegido, la corriente se desvía al resto del circuito en el troquel. Si no puede absorber el exceso de corriente, entonces comienza a aumentar el voltaje de suministro interno de Vdd. Esto a veces puede dañar las cosas de forma impredecible.

Hay algunos controladores que protegen en ambas condiciones donde el circuito interno está aislado y el controlador está protegido, sin embargo, este no suele ser el caso (siga el seguimiento de patentes en el enlace para ver más ejemplos). Los controladores de salida para pines ocupan mucho espacio en el troquel y, a menudo, se minimizan.

Estoy de acuerdo con tu opinión. Sin embargo, me gustaría saber qué sucede en un nivel inferior. En este caso me refiero a un STM8L151R6 uC. El manual de referencia incluye un esquema de pines de E/S, sin embargo, no detalla este escenario. Si revisa el esquema citado, verá el mosfet de lado alto (búfer de canal p). Lo que sospecho que está sucediendo es que la corriente de 680uA descrita anteriormente se hunde a través del mosfet del lado alto (a través del diodo intrínseco del MOSFET - unión pn) a VDD. ¿Cuál es tu opinión sobre esto?
La Sección 9.3.6 muestra que probaron pines no tolerantes a +/- 5 mA sin fallas internas. Sin embargo, también afirman que "se debe evitar un valor superior a VDD (para pines estándar) durante el funcionamiento normal del producto". No pude encontrar el esquema que mencionas, pero a menudo se simplifican para su publicación. Llame o envíe un correo electrónico a un ingeniero de aplicaciones de STM. Pero, en general, si las especificaciones dicen que no lo hagas ... como notaste, las uniones pn son las que generalmente se fríen. Si su uC de 3V baja, se hundirá aún más actual ~ 2mA.