Los pines a vigilar en el ESP32-S3
GPIO 0, 3, 45 y 46: pines de strapping
El GPIO0 tiene un pull-up y va al botón BOOT: en BAJO durante el reset entra en modo de descarga. El GPIO46 debe estar en BAJO o sin conectar para el modo de descarga, y el GPIO45 elige la tensión de la flash, así que ninguno de los dos debe ponerse en ALTO al encender. El GPIO3 solo importa si un eFuse elige la fuente del JTAG; en las placas estándar es un pin libre con ADC y táctil.
| GPIO | Valor en el reset | Qué elige | En la práctica |
|---|---|---|---|
| 0 | Pull-up débil (ALTO) | Modo de arranque: ALTO ejecuta el programa, BAJO entra en modo de descarga | Botón BOOT; nada más debe mantenerlo en BAJO |
| 3 | Sin conectar | Fuente del JTAG, solo si un eFuse la activa | Un pin normal en los chips estándar |
| 45 | Pull-down débil (BAJO) | Tensión de la flash: BAJO 3,3 V, ALTO 1,8 V | Nunca en ALTO durante el reset |
| 46 | Pull-down débil (BAJO) | Debe estar en BAJO para el modo de descarga; también controla los mensajes de arranque de la ROM | Nunca en ALTO durante el reset |
GPIO 35, 36 y 37: PSRAM octal
En las versiones más comunes, N8R8, N16R8V y N32R8V, el módulo usa PSRAM o flash octal y estos tres pines están conectados a ella. Solo las placas N8 y N8R2 los dejan libres, así que comprueba el código de pedido de tu placa antes de usarlos. En las dos versiones V, N16R8V y N32R8V, el módulo ESP32-S3-WROOM-2 tiene la memoria a 1,8 V, y los GPIO47 y GPIO48 también funcionan a 1,8 V.
GPIO 19 y 20: USB nativo
Llevan las líneas D− y D+ del puerto rotulado USB. Usarlos como GPIO desactiva la programación, el puerto serie y la depuración por ese puerto; el puerto UART, en los GPIO 43 y 44, sigue funcionando.
ADC, táctil y Wi-Fi
El ADC1 está en los GPIO del 1 al 10 y el ADC2 en los GPIO del 11 al 20. El driver del Wi-Fi usa el ADC2, así que las lecturas en esos pines pueden fallar con el Wi-Fi encendido: en un proyecto conectado usa los GPIO del 1 al 10. Las entradas táctiles están en los GPIO del 1 al 14, y los GPIO del 0 al 21 son pines RTC que pueden despertar al chip del deep sleep.
Alimentación y LED RGB
Alimenta la placa desde una sola fuente a la vez: un puerto USB, el pin 5V o el pin 3V3, como indica la guía de Espressif. El LED RGB direccionable está en el GPIO38 en las placas v1.1 y en el GPIO48 en la primera versión; necesita una biblioteca o un driver de LED RGB, no un simple digitalWrite().
Tabla completa de pines de la ESP32-S3-DevKitC-1
| Pin | GPIO | Estado | Analógico | Funciones | Notas |
|---|---|---|---|---|---|
| J3-14 | GPIO0 | Con cuidado | No | RTC_GPIO0, PWM (LEDC) | strapping, botón BOOT |
| J3-4 | GPIO1 | Libre | ADC1_CH0 | TOUCH1, RTC_GPIO1, PWM (LEDC) | Sin restricciones |
| J3-5 | GPIO2 | Libre | ADC1_CH1 | TOUCH2, RTC_GPIO2, PWM (LEDC) | Sin restricciones |
| J1-13 | GPIO3 | Libre | ADC1_CH2 | TOUCH3, RTC_GPIO3, PWM (LEDC) | strapping (fuente del JTAG) |
| J1-4 | GPIO4 | Libre | ADC1_CH3 | TOUCH4, RTC_GPIO4, PWM (LEDC) | Sin restricciones |
| J1-5 | GPIO5 | Libre | ADC1_CH4 | TOUCH5, RTC_GPIO5, PWM (LEDC) | Sin restricciones |
| J1-6 | GPIO6 | Libre | ADC1_CH5 | TOUCH6, RTC_GPIO6, PWM (LEDC) | Sin restricciones |
| J1-7 | GPIO7 | Libre | ADC1_CH6 | TOUCH7, RTC_GPIO7, PWM (LEDC) | Sin restricciones |
| J1-12 | GPIO8 | Libre | ADC1_CH7 | TOUCH8, RTC_GPIO8, PWM (LEDC) | I²C SDA |
| J1-15 | GPIO9 | Libre | ADC1_CH8 | TOUCH9, RTC_GPIO9, PWM (LEDC) | I²C SCL |
| J1-16 | GPIO10 | Libre | ADC1_CH9 | TOUCH10, RTC_GPIO10, PWM (LEDC) | SPI CS |
| J1-17 | GPIO11 | Libre | ADC2_CH0 | TOUCH11, RTC_GPIO11, PWM (LEDC) | ADC2: no con Wi-Fi, SPI MOSI (TX) |
| J1-18 | GPIO12 | Libre | ADC2_CH1 | TOUCH12, RTC_GPIO12, PWM (LEDC) | ADC2: no con Wi-Fi, SPI SCK |
| J1-19 | GPIO13 | Libre | ADC2_CH2 | TOUCH13, RTC_GPIO13, PWM (LEDC) | ADC2: no con Wi-Fi, SPI MISO (RX) |
| J1-20 | GPIO14 | Libre | ADC2_CH3 | TOUCH14, RTC_GPIO14, PWM (LEDC) | ADC2: no con Wi-Fi |
| J1-8 | GPIO15 | Libre | ADC2_CH4 | RTC_GPIO15, PWM (LEDC), XTAL_32K_P | cristal de 32 kHz, ADC2: no con Wi-Fi |
| J1-9 | GPIO16 | Libre | ADC2_CH5 | RTC_GPIO16, PWM (LEDC), XTAL_32K_N | cristal de 32 kHz, ADC2: no con Wi-Fi |
| J1-10 | GPIO17 | Libre | ADC2_CH6 | RTC_GPIO17, PWM (LEDC) | ADC2: no con Wi-Fi |
| J1-11 | GPIO18 | Libre | ADC2_CH7 | RTC_GPIO18, PWM (LEDC) | ADC2: no con Wi-Fi |
| J3-20 | GPIO19 | Con cuidado | ADC2_CH8 | RTC_GPIO19, PWM (LEDC), USB D− | USB nativo, ADC2: no con Wi-Fi |
| J3-19 | GPIO20 | Con cuidado | ADC2_CH9 | RTC_GPIO20, PWM (LEDC), USB D+ | USB nativo, ADC2: no con Wi-Fi |
| J3-18 | GPIO21 | Libre | No | RTC_GPIO21, PWM (LEDC) | Sin restricciones |
| J3-13 | GPIO35 | Con cuidado | No | PWM (LEDC) | PSRAM o flash octal |
| J3-12 | GPIO36 | Con cuidado | No | PWM (LEDC) | PSRAM o flash octal |
| J3-11 | GPIO37 | Con cuidado | No | PWM (LEDC) | PSRAM o flash octal |
| J3-10 | GPIO38 | Libre | No | PWM (LEDC) | LED RGB (v1.1) |
| J3-9 | GPIO39 | Libre | No | PWM (LEDC), MTCK (JTAG) | JTAG |
| J3-8 | GPIO40 | Libre | No | PWM (LEDC), MTDO (JTAG) | JTAG |
| J3-7 | GPIO41 | Libre | No | PWM (LEDC), MTDI (JTAG) | JTAG |
| J3-6 | GPIO42 | Libre | No | PWM (LEDC), MTMS (JTAG) | JTAG |
| J3-2 | GPIO43 | Con cuidado | No | PWM (LEDC), U0TXD | UART0, UART TX |
| J3-3 | GPIO44 | Con cuidado | No | PWM (LEDC), U0RXD | UART0, UART RX |
| J3-15 | GPIO45 | Con cuidado | No | PWM (LEDC) | strapping |
| J1-14 | GPIO46 | Con cuidado | No | PWM (LEDC) | strapping |
| J3-17 | GPIO47 | Libre | No | PWM (LEDC) | 1,8 V en módulos V |
| J3-16 | GPIO48 | Libre | No | PWM (LEDC) | 1,8 V en módulos V, LED RGB (v1.0) |
Pines por defecto de Arduino-ESP32 para el ESP32-S3: I²C en 8 (SDA) y 9 (SCL), SPI en 12 (SCK), 13 (MISO), 11 (MOSI) y 10 (SS), UART0 en 43 (TX) y 44 (RX). Con la GPIO matrix cualquier pin libre puede llevarlos.
Preguntas frecuentes
¿Qué pines del ESP32-S3 puedo usar sin problemas?
En una DevKitC-1 los pines sin restricciones son los GPIO 1, 2, del 4 al 18, 21, del 38 al 42, 47 y 48 (salvo en las placas N16R8V y N32R8V de 1,8 V); el 38 o el 48 también controla el LED RGB, según la versión de la placa. El GPIO3 también está libre salvo que un eFuse lo use para el JTAG, y en las placas N8 y N8R2 también lo están del 35 al 37. Cuidado con los GPIO 0, 45 y 46 (strapping), 19 y 20 (USB) y 43 y 44 (UART0).
¿Por qué no puedo usar los GPIO 35, 36 y 37?
En las placas con PSRAM o flash octal (N8R8, N16R8V, N32R8V) estos pines están conectados a la memoria dentro del módulo, y manejarlos cuelga el programa. Solo están libres en las versiones N8 y N8R2.
¿Puedo usar el ADC2 con Wi-Fi en el ESP32-S3?
No de forma fiable: el driver del Wi-Fi usa el ADC2, así que las lecturas en los GPIO del 11 al 20 pueden fallar con el Wi-Fi encendido. Pon las entradas analógicas en los GPIO del 1 al 10 (ADC1).
¿Qué puerto USB de la DevKitC-1 debo usar?
Los dos sirven para cargar programas. El puerto UART pasa por un conversor USB-UART conectado a los GPIO 43 y 44; el puerto USB va al USB del propio chip en los GPIO 19 y 20, y además ofrece depuración JTAG y funciones de dispositivo USB, como un teclado.
¿Los pines del ESP32-S3 toleran 5 V?
No. Los GPIO trabajan a 3,3 V y no están garantizados para 5 V. Para señales de 5 V usa un conversor de nivel o un divisor resistivo.