Descripción de los GPIOs en Microcontroladores de la serie STM32F4.

GPIO (General Purpose Input/Output)

Pin genérico en un chip, cuyo comportamiento puede ser programado por el usuario en tiempo de ejecución.

Características Principales de los GPIO 

  • Estados de salida: Push-Pull, Open Drain + resistencia de Pull o Down, analógico.
  • Estados de entrada: flotante, Pull-Up, Pull-Down, analógica.
  • Velocidad de lectura/escritura seleccionable.
  • Bloqueo de GPIO.
  • Selección de funciones alternativas.
  • Tolerantes a 5v.
  • Casi todos los GPIO de la serie STM32 pueden ser configurados como fuente de interrupción externa.

Estructura básica de un GPIO en un microcontrolador SMT32F4

Figura 1. Estructura básica de un GPIO

En la imagen anterior se muestra la estructura interna de un GPIO. En el recuadro Azul se muestran las posibles configuraciones de entrada, en el rojo las posibles configuraciones de salida y el recuadro verde muestra las configuraciones disponibles para las resistencias de Pull.

Configuración de entrada digital

Figura 2. Entrada digital, Pull-Down, Pull-Up, o Flotante

El buffer de salida es deshabilitado cuando el GPIO es configurado como entrada:

  • La entrada Schmitt Trigger es activada.
  • Las resistencias de Pull-Up o Pull-Down están disponibles para ser activadas.
  • El dato presente en el puerto puede ser leído y es muestreado tan rápido como la velocidad del puerto sea configurada.

Configuración de salida digital

Figura 3. Salida digital

Cuando el GPIO es configurado como salida:

  • El buffer de salida es habilitado.
    • Modo Open-Drain:
      • Un “0” en el registro de salida activa el N-MOS
      • Un “1”En el registro de salida deja el puerto en alta impedancia (el P-MOS nunca se activa).
    • Modo Push-Pull:
      • Un “0” en el registro de salida activa el N-MOS mientras
      • Un “1” en el registro de salida activa el P-MOS
  • La entrada Schmitt Trigger es activada.
  • Las resistencias de Pull-Up o Pull-Down están disponibles para ser activadas.
  • Se puede leer el valor presente en el GPIO.
  • Se puede leer el último valor escrito en el GPIO.
  • El dato presente en el puerto puede ser leído y es muestreado tan rápido como la velocidad del puerto sea configurada.

Configuración de función alternativa

Figura 4. Configuración como función alternativa

Cuando el GPIO es configurado como una función alternativa:

  • El buffer de salida puede ser configurado como Open-Drain o como Push-Pull.
  • El buffer de salida es controlado por la señal proveniente del periférico seleccionado.
  • La entrada Schmitt Trigger es activada.
  • Las resistencias de Pull-Up o Pull-Down están disponibles para ser activadas.
  • Se puede leer el valor presente en el GPIO.
  • El dato presente en el puerto puede ser leído y es muestreado tan rápido como la velocidad del puerto sea configurada.

Configuración analógica

Figura 5. Configuración analógica con alta impedancia de entrada

Cuando el GPIO es configurado como analógico:

  • El buffer de salida es deshabilitado.
  • La entrada Schmitt Trigger es desactivada, y se fuerza un valor de “0” a la salida.
  • Las resistencias de Pull-Up o Pull-Down están deshabilitadas.
  • Si se intenta leer el registro de entrada siempre se obtendrá un valor de “0”.
  • Además de leer valores analógicos algunos GPIO permiten escribir valores analógicos a la salida del pin.

Nota: En configuración analógica el GPIO no es tolerante a 5v, el máximo voltaje soportado es de 3.3v.

Selección de velocidad de un GPIO

La arquitectura interna de los GPIO de los microcontroladores de la serie STM32F4 permite configurar la velocidad de lectura o escritura, con la finalidad de tomar mayor control sobre el ruido eléctrico generado por dicho dispositivo.

Las configuraciones de velocidades se enlistan a continuación:

  • Low Speed.
  • Medium Speed.
  • High Speed.Very High Speed.

Dependiendo de la aplicación de cada dispositivo debe ser seleccionada dicha velocidad.

Figura 6. Tabla de periféricos pertenecientes al bus AHB1

Como se puede observar en la ilustración anterior, los puertos GPIO pertenecen al bus de datos AHB1, que alcanza una frecuencia superior a 84 Mhz, pero si el puerto está configurado con una función alternativa que se encuentre en el bus APB1, alcanzara una frecuencia de 48 Mhz.

Funciones alternativas de un GPIO

Cada GPIO tiene multiplexadas hasta 16 funciones alternativas como se muestra a continuación.

Figura 7. Multiplexor de salida de GPIO

En la siguiente tabla, se muestran las funciones alternativas disponibles para el puerto A del microcontrolador STM32F407VG, dichas funciones pueden ser módulos de: UART, I2C, SPI, USB, interrupciones, salidas de Timers, CAN entre otas.

Al elegir una función se debe tomar en cuenta que esta puede estar multiplexada diferentes GPIO con la finalidad de flexibilizar su uso.

Figura 8. Tabla de funciones alternativas del puerto A del microcontrolador STM32F407

NOTA: Para mayor información acerca de las funciones alternativas disponibles para cada GPIO, específicamente consultar la Tabla 9: “Alternate function mapping” de la hoja de datos del microcontrolador (DM00037051.pdf).

Pasos para configurar un GPIO:

1.- Seleccionar el número del pin de un que desea utilizar, este debe ser entre 0 y 15.

2.- Seleccionar el modo de operación; entrada, salida, análogo, interrupción, etc.

3.- Seleccionar la activación o desactivación de las resistencias de pull.

4.- Seleccionar la velocidad a la que trabajara dicho periférico.

5.- Especificar si el periférico está asociado a una función alternativa.

Menú