En la biblioteca de periféricos estándar STM32, necesitamos configurar el GPIO.
Pero hay 3 funciones que no estoy seguro de cómo configurarlas;
En GPIO_Speed , hay 4 configuraciones para elegir
GPIO_Speed_2MHz /*!< Low speed */
GPIO_Speed_25MHz /*!< Medium speed */
GPIO_Speed_50MHz /*!< Fast speed */
GPIO_Speed_100MHz
¿Cómo sé qué velocidad elijo? ¿Hay alguna ventaja o desventaja al usar alta o baja velocidad? (por ejemplo: ¿consumo de energía?)
En GPIO_OType , hay 2 configuraciones para elegir
GPIO_OType_PP // Push pull
GPIO_OType_OD // Open drain
¿Cómo saber cuál elegir? ¿Y qué es drenaje abierto y empujar y tirar?
En GPIO_PuPd , hay 3 configuraciones para elegir
GPIO_PuPd_NOPULL // No pull
GPIO_PuPd_UP // Pull up
GPIO_PuPd_DOWN // Pull down
Creo que esta configuración está relacionada con la configuración inicial de push pull.
En los circuitos digitales, es importante que nunca se permita que las líneas de señal "floten". Es decir, necesitan estar siempre en un estado alto o bajo. Cuando flota, el estado es indeterminado y causa algunos tipos diferentes de problemas.
La forma de corregir esto es agregar una resistencia desde la línea de señal a Vcc o Gnd. De esa manera, si la línea no está siendo impulsada activamente hacia arriba o hacia abajo, la resistencia hará que el potencial se desvíe a un nivel conocido.
El STM32 (y otros microcontroladores) tienen circuitos incorporados para hacer esto. De esa manera, no necesita agregar otra parte a su circuito. Si elige "GPIO_PuPd_UP", por ejemplo, es equivalente a agregar una resistencia entre la línea de señal y Vcc.
Push-Pull: este es el tipo de salida que la mayoría de la gente considera "estándar". Cuando la salida baja, se "tira" activamente a tierra. Por el contrario, cuando la salida se establece en alta, se "empuja" activamente hacia Vcc. Simplificado, se ve así:
Una salida de drenaje abierto, por otro lado, solo está activa en una dirección. Puede tirar del pasador hacia el suelo, pero no puede llevarlo alto. Imagina la imagen anterior, pero sin el MOSFET superior. Cuando no está tirando a tierra, el MOSFET simplemente no es conductor, lo que hace que la salida flote:
Para este tipo de salida, se debe agregar una resistencia pull-up al circuito, lo que hará que la línea suba cuando no esté baja. Puede hacer esto con una parte externa o configurando el valor GPIO_PuPd en GPIO_PuPd_UP.
El nombre proviene del hecho de que el drenaje del MOSFET no está conectado internamente a nada. Este tipo de salida también se denomina "colector abierto" cuando se usa un BJT en lugar de un MOSFET.
Básicamente, esto controla la velocidad de respuesta (el tiempo de subida y el tiempo de caída) de la señal de salida. Cuanto más rápida sea la velocidad de respuesta, más ruido se irradia desde el circuito. Es una buena práctica mantener la velocidad de respuesta lenta y solo aumentarla si tiene una razón específica.
La velocidad de GPIO es la frecuencia máxima que puede producir el GPIO. Los ajustes más bajos pueden ahorrar energía.
El tipo de salida es si el pin afirma altos y bajos (push pull) o si la salida enciende la compuerta de un FET que está conectado al pin en el drenaje (drenaje abierto). Esto puede ser conveniente si necesita algún pin adjunto para poder bajar un bus sin cortocircuitar otros pines.
Las resistencias extraíbles conectan la salida del pin al riel de alimentación y las conectan a tierra a través de una resistencia. Esto, entre otras cosas, controlará el voltaje del pin incluso si el bit está en un estado de alta impedancia. Esto es importante para hacer cosas como usar un interruptor puntual para cambiar un valor de entrada digital. Incluso con el interruptor abierto, la entrada es predecible.
grapas gabriel