Parámetros de arranque de ESP32 - GPIO0 y otros pines de strap
Pines de strap de ESP32 - Navega por los modos de arranque predeterminados y de descarga (flash) con GPIO0 y otras configuraciones de arranque con los parámetros de los pines GPIO de strap.
Los pines de strap juegan un papel importante en la arquitectura de todos los microcontroladores ESP32, incluidos el ESP32 original, ESP32-S2, ESP32-S3, ESP32-C3 y ESP32-C6. Hoy vamos a explorar las características y funciones comunes de los pines de strap en diferentes versiones de ESP32. Los pines de strap en los microcontroladores ESP32 se utilizan generalmente para:
- Selección del Modo de Arranque
- Selección de Voltaje
- Control de Fuente de Señal JTAG
- Impresión de Mensajes ROM
¿Qué Son los Pines de Configuración? #
Los pines de configuración son un conjunto de pines en el ESP32 u otros microcontroladores que cumplen un propósito único durante el proceso de inicio o reinicio del chip. Estos pines actúan como configuradores, permitiendo que el chip reciba algunos parámetros para su configuración inicial.
Piensa en un chip de computadora como un dispositivo de alta tecnología que necesita instrucciones específicas para funcionar correctamente. Los "pines de configuración" son esencialmente puntos de entrada que ayudan a determinar cómo debe comportarse el chip cuando se inicia o se reinicia.
Características Comunes de Configuración entre las Versiones de ESP32 #
En cada inicio o reinicio, el chip ESP32 necesita parámetros de configuración específicos para determinar su modo de arranque, ajustes de voltaje y más. Vamos a echar un vistazo a los componentes que se comparten entre varias versiones de ESP32. Estos componentes establecen el comportamiento de los chips en el inicio y el reinicio.
Selección del Modo de Arranque #
GPIO0 es un pin de configuración crítico en varias versiones de microcontroladores ESP32, como la serie original ESP32, ESP32-S2 y ESP32-S3, que influye en el modo de arranque.
Modo de Arranque 0 - Modo de Descarga (GPIO0 = 0 (BAJO)):
- Cuando GPIO0 se conecta a tierra (pulled low) durante el arranque, indica Modo de Arranque 0.
- El ESP32 entra en Modo de Descarga, permitiéndole recibir nuevo firmware a través de herramientas de flasheo.
Modo de Arranque 1 - Modo Predeterminado (GPIO0 = 1 (ALTO)):
- Cuando GPIO0 se conecta a VCC o a través de una resistencia pull-up (pulled high) durante el arranque, indica Modo de Arranque 1.
- El ESP32 entra en el modo de operación normal predeterminado, donde ejecuta el programa almacenado en la memoria flash.
Si estás utilizando una placa de desarrollo, normalmente viene con un botón conectado a GPIO0, lo que te permite cambiar fácilmente entre los modos normal y de programación.
Selección de Voltaje #
La selección de voltaje es otra característica de la configuración de los pines de strap de los microcontroladores ESP32.
Voltaje VDD_SPI
El voltaje VDD_SPI es el voltaje de suministro para la memoria SPI flash en los microcontroladores ESP32. Determina el nivel de voltaje necesario para el correcto funcionamiento de la flash SPI. Se puede configurar en ESP32-S2, ESP32-S3 y ESP32-C3 aplicando resistencias externas pull-down o pull-up.
ESP32-S2 y ESP32-S3:
- El pin de strap GPIO45 está asociado con la selección del voltaje VDD_SPI. La selección puede verse influenciada aplicando resistencias externas pull-down o pull-up a GPIO45.
ESP32-S3:
- Introduce controles adicionales para el voltaje VDD_SPI a través de bits eFuse. El bit eFuse_VDD_SPI_FORCE determina si el voltaje VDD_SPI es controlado por GPIO45 o por bits eFuse específicos. Dependiendo de la configuración de eFuse, el voltaje VDD_SPI puede estar vinculado a 1.8V o 3.3V, proporcionando flexibilidad en las configuraciones del sistema.
ESP32-C3:
- Similar a ESP32-S2 y ESP32-S3, el ESP32-C3 cuenta con GPIO45 para la selección del voltaje VDD_SPI. Se pueden aplicar resistencias externas pull-down o pull-up a GPIO45 para influir en el nivel de voltaje predeterminado durante el reinicio del sistema.
Voltaje VDD_SDIO
El voltaje VDD_SDIO está asociado con el voltaje de suministro para la interfaz SDIO en el ESP32-C6. Este voltaje se selecciona para el correcto funcionamiento de dispositivos conectados por SDIO, como tarjetas SD.
Control de Fuente de Señal JTAG #
El Control de Fuente de Señal JTAG implica la configuración del pin de strap durante el proceso de arranque inicial. El pin de strap se puede utilizar para determinar la fuente de las señales JTAG, influyendo en cómo se utilizan los pines JTAG (MTDI, MTCK, MTMS y MTDO).
Interactúa con configuraciones eFuse como EFUSE_DIS_PAD_JTAG, EFUSE_DIS_USB_JTAG y EFUSE_JTAG_SEL_ENABLE.
Opciones:
- Cuando GPIO15 está en 0 (BAJO), los pines JTAG provienen del Controlador USB Serial/JTAG.
- Cuando GPIO15 está en 1 (ALTO), los pines JTAG siguen la configuración del circuito externo.
- Varias combinaciones de eFuse controlan el comportamiento, permitiendo la personalización de las fuentes de señal JTAG.
Debes tener cuidado con las configuraciones para evitar comportamientos no deseados, y el circuito externo que controla GPIO15 no debe estar en un estado de alta impedancia.
Impresión de Mensajes ROM #
La Impresión de Mensajes ROM se refiere a la visualización de mensajes generados por el código ROM durante el proceso de arranque. Los mensajes ROM se pueden imprimir en diferentes interfaces, como UART0 y el Controlador USB Serial/JTAG.
Opciones:
- Valores eFuse específicos, la configuración de GPIO8 y otras configuraciones eFuse relacionadas gestionan la habilitación, deshabilitación o personalización de la impresión del código ROM.
Las configuraciones deben alinearse con la configuración de depuración o comunicación deseada. Puedes elegir a dónde se envían los mensajes ROM mediante la configuración de los pines de strap.
Resumen de los Pines de Strap del ESP32 #
Para facilitar la comparación y comprensión, echemos un vistazo a las características de los pines de strap de las diferentes versiones de ESP32 y la Configuración Predeterminada de Pines de Strap del ESP32 en una tabla:
Versión ESP32 | Pines de Strapping | Configuraciones Predeterminadas | Parámetros Controlados |
---|---|---|---|
ESP32 | MTDI, GPIO0, GPIO2, MTDO, GPIO5 | MTDI: Flotante, GPIO0: Flotante, GPIO2: Flotante, MTDO: Flotante, GPIO5: Flotante | Modo de Arranque, Voltaje VDD_SPI, Impresión de Mensajes ROM, Fuente JTAG |
ESP32-S2 | GPIO0, GPIO45, GPIO46 | GPIO0: Pull-up, GPIO45: Pull-down, GPIO46: Pull-down | Modo de Arranque, Voltaje VDD_SPI, Impresión de Mensajes ROM, Fuente JTAG |
ESP32-S3 | GPIO0, GPIO3, GPIO45, GPIO46 | GPIO0: Pull-up, GPIO3: Flotante, GPIO45: Pull-down, GPIO46: Pull-down | Modo de Arranque, Voltaje VDD_SPI, Impresión de Mensajes ROM, Fuente JTAG |
ESP32-C3 | GPIO2, GPIO8, GPIO9 | GPIO2: Flotante, GPIO8: Flotante, GPIO9: Pull-up | Modo de Arranque, Impresión de Mensajes ROM |
ESP32-C6 | MTMS, MTDI, GPIO8, GPIO9, GPIO15 | MTMS: Flotante, MTDI: Flotante, GPIO8: Flotante, GPIO9: Pull-up, GPIO15: Flotante | Control de Borde SDIO, Modo de Arranque, Impresión de Mensajes ROM, Fuente JTAG |
Utilizando Pines de Strapping Más Allá del Arranque #
Si bien los pines de strapping sirven principalmente como parámetros de configuración durante el proceso de arranque, eso no significa que los pines deban dejarse solos, aparte de la configuración inicial.
Una vez que el microcontrolador ESP32 se ha inicializado con éxito, estos pines se transforman en pines GPIO (General Purpose Input/Output) regulares, disponibles para funciones definidas por el usuario. Sin embargo, debes tener cuidado al manipular estos pines durante y inmediatamente después de la fase de arranque.
En un escenario ideal, es mejor evitar el uso de estos pines por completo, ya que alterar sus estados sin la debida consideración puede llevar a comportamientos inesperados, fallos o incluso malfuncionamientos del sistema.
¿Qué pines evitar en las placas ESP32? #
Para revisar una vez más, echemos un vistazo a los pines de strapping en diferentes versiones de ESP32 y recuerda evitarlos al usarlos como pines GPIO.
Versión ESP32 | Pines de Strapping |
---|---|
ESP32 | GPIO0, GPIO2, GPIO5, GPIO12 (MTDI), GPIO15 (MTDO) |
ESP32-S2 | GPIO0, GPIO45, GPIO46 |
ESP32-S3 | GPIO0, GPIO3, GPIO45, GPIO46 |
ESP32-C3 | GPIO2, GPIO8, GPIO9 |
ESP32-C6 | GPIO8, GPIO9, MTDI (GPIO12), GPIO14 (MTMS), GPIO15 |
Recursos Adicionales #
- ESP32 Series Hoja de datos
- ESP32-S2 Series Hoja de datos
- ESP32-S3 Series Hoja de datos
- ESP32-C3 Series Hoja de datos
- ESP32-C6 Series Hoja de datos
Conclusión #
En conclusión, los pines de strapping juegan un papel importante en la inicialización y configuración de varias versiones de microcontroladores ESP32, incluidos ESP32-S2, ESP32-S3, ESP32-C3 y ESP32-C6. Estos pines actúan como guardianes, influyendo en parámetros críticos durante el arranque o el reinicio, como el modo de arranque, la selección de voltaje, la fuente de señal JTAG y más.
A través de las diferentes versiones de ESP32, persisten ciertos pines de strapping comunes, cada uno con sus funciones y configuraciones predeterminadas únicas. GPIO0, por ejemplo, es el pin de strapping más comúnmente utilizado, que se emplea para seleccionar el modo de arranque.