Tratando de entender el modo de salida push-pull y el modo de salida de drenaje abierto en el pin GPIO de una MCU

Tengo una MCU (STM32H7xx) cuyos GPIO, cuando se configuran como salida, se pueden configurar como drenaje abierto o push-pull. Antes de ver esto, pensé que open-drain significaba hihg-Z, sin embargo, no veo cómo funciona solo leyendo los documentos de STMicro. Dejame explicar:

Este es el esquema de GPIO:esquemas GPIO

Y esta es la explicación que estoy leyendo (se adjunta como imagen para no perder el formato):ingrese la descripción de la imagen aquí

Ahora, con respecto al modo de salida push-pull, tengo entendido que las resistencias pull up/down están deshabilitadas, los mosfets se usan para generar VDD o VSS (que está conectado a tierra). Estoy feliz con eso.

Lo que no entiendo es cuál es el objetivo del modo de drenaje abierto, déjame explicarte: el doc. dice que necesita habilitar la resistencia pull-up para que funcione en este modo. En ese caso, entiendo que cuando habilita el NMOS, VDD se conecta a tierra a través de la resistencia pull-up, por lo tanto, el pin de salida está impulsando un 0. Sin embargo, si el NMOS está deshabilitado, estará impulsando VDD a través del pull-up. resistor.

Preguntas : ¿Es correcto lo anterior? Si es así, ¿cuál es el punto de este modo? Parece lograr exactamente el mismo comportamiento que el push-pull. ¿Cómo se obtiene una salida de alta Z?

Fuentes :

stm32h7 43/53 manual de referencia - ver 11.3.10

Configuración STM32 GPIO - ver 3.3.2

Una ventaja es que puede cablear-O varias salidas de drenaje abiertas juntas, y si alguna baja, la señal bajará. Esto podría ser útil para un montón de señales de falla, por ejemplo. Cualquier falla haría que la señal de apagado o de indicación de error bajara.
El colector abierto se puede usar para nivelar el convertidor, conducir el transistor, crear un bucle de corriente, etc.

Respuestas (3)

Primer concepto erróneo: el modo push-pull no significa que las resistencias pull-up y pull-down débiles estén desactivadas. En algunas MCU pueden serlo, pero esta MCU tiene un control separado para las resistencias y el modo de salida. Las resistencias se pueden habilitar incluso en el modo push-pull, pero no tiene sentido porque los transistores fuertes pueden empujar o tirar mucho más fuerte y anularán las resistencias débiles.

El modo push-pull significa que la salida está muy baja a VSS o muy alta a VDD.

El modo de drenaje abierto simplemente deja de impulsar el FET alto, por lo que el pin se tira fuertemente hacia abajo a VSS o se deja flotando en Z alto. Dependiendo de las resistencias pull-up internas o externas, eso es responsable de elevar los datos. Si desea una Z alta, use el modo de drenaje abierto para que no empuje hacia arriba, o configure el pin como entrada y no empuje hacia arriba ni hacia abajo.

El modo de drenaje abierto es compatible con otros artículos que son de drenaje abierto. En el caso del bus I2C, por ejemplo, el pin IO debe estar en modo de drenaje abierto, y lo que es aún más útil es el hecho de que, si bien es una MCU de 3,3 V, el modo de drenaje abierto permite (algunos pines, no todos). ) para subir a 5 V, por ejemplo, para permitir que la MCU de 3,3 V hable directamente en un bus I2C de 5 V con otros dispositivos I2C de 5 V.

El modo de colector abierto se usa comúnmente para impulsar una señal compartida por varios controladores (como su microcontrolador y un sensor de temperatura). Cuando ninguno de los dispositivos está manejando, la señal será alta debido a la resistencia pull-up, pero los transistores NMOS en ambos dispositivos son capaces de sobrecargar la resistencia y bajar la línea.

Entonces, cualquiera de los dos dispositivos puede bajar la línea. Cualquiera de los dos dispositivos puede permitir que la línea suba al no tirar de ella hacia abajo. La última pieza del rompecabezas es un protocolo de comunicaciones que evita colisiones... ambos dispositivos intentan reducir la línea al mismo tiempo.

Un buen ejemplo de esto son las comunicaciones I2C, que utilizan un solo cable como línea de datos compartida bidireccional entre muchos dispositivos. Uno de los dispositivos debe ser el maestro, que controla la comunicación y permite que los demás dispositivos utilicen la línea.

Si eso es correcto.

Si usó drenaje abierto, entonces necesita una resistencia para apagar el drenaje, que es más lento, ya que sería una resistencia más alta que un controlador CMOS de 25 ~ 50 R cuando se busca una V baja de alta velocidad con Ciss aumentando con reducción de RdsOn.

Use el modo de controlador Push pull si usan el mismo voltaje con Vt = ~ 1V FET.

Use Open Drain con un pull-up R=470 a 1K R más o menos para usar FET de mayor voltaje. Esto entonces actúa como un traductor de nivel de voltaje. Asegúrese de permitir una banda muerta de 1 us para evitar la conducción cruzada. Esto a veces se hace con resistencias desiguales a las puertas y un diodo para que el tiempo de encendido sea más lento con una resistencia más alta y luego el tiempo de apagado sea más rápido con el diodo y una resistencia más pequeña.