que-pines-puedo-usar-esp32-s3

Qué pines puedo usar en un ESP32-S3

El ESP32-S3 es una máquina compleja, con una gran cantidad de pines y funciones, y muchas opciones de configuración. Para ello, cada pin comparte más de una funcionalidades.

En consecuencia, igual que ocurre en el ESP8266 y en el ESP32 (sin versión), no todos los pines son usables en nuestros proyectos.

Por tanto, es muy útil tener una tabla de resumen con los pines y sus funciones, indicando que pines son seguros para usar en nuestro proyecto.

Strapping Pins

El chip ESP32 cuenta con los siguientes pines de strapping.

  • ⚠️ GPIO 0 - Chip boot mode
  • ⚠️ GPIO 46 - Chip boot mode y ROM messages printing
Boot ModeGPIO0
Pulled-up
GPIO46
Pulled-down
SPI Boot1x
Download00
  • ⚠️ GPIO 3 - JTAG signal source
  • ⚠️ GPIO 45 - VDD_SPI voltage, selecciona entre 1.8V y 3.3V

Estos pines afectan a la configuración durante el arranque, por lo que lo mejor es que evitemos usarlos en nuestro proyecto.

Otros pines que debemos evitar usar

Estos son los otros pines que son conflictivos, y debemos evitar usar.

  • ❌SPI0/1: Los pines GPIO26-32 generalmente se usan para la memoria flash SPI y PSRAM, y no se recomienda su uso para otras funciones.
  • ⚠️ USB_D: Los pines GPIO19-20 están conectados con el USB_D.
  • 🟢 PSRAM: Los pines GPIO33-37 no podrán usarse si forman también están conectados a las SPI o PSRAM (lo normal es que no)
  • 🟢 JTAG: Los pines GPIO39-42 no podrás usarlos si empelas la depuración JTAG en línea para la depuración en línea.

Los que vienen marcados con 🟢 depende de la configuración de nuestra placa. En general, lo normal es que sí podamos usarlos.

Resumen de los pines

Aquí tenéis la tabla final de resumen de los pines, y si podemos usarlos o no de forma segura en nuestro proyecto.

GPIOFUNCIONESPUEDES USARLO
0RTC_GPIO0, GPIO0⚠️ STRAPPING
Pulled-up
1RTC_GPIO1, GPIO1, TOUCH1, ADC1_CH0✔️
2RTC_GPIO2, GPIO2, TOUCH2, ADC1_CH1✔️
3RTC_GPIO3, GPIO3, TOUCH3, ADC1_CH2⚠️ STRAPPING
Floating
4RTC_GPIO4, GPIO4, TOUCH4, ADC1_CH3✔️
5RTC_GPIO5, GPIO5, TOUCH5, ADC1_CH4✔️
6RTC_GPIO6, GPIO6, TOUCH6, ADC1_CH5✔️
7RTC_GPIO7, GPIO7, TOUCH7, ADC1_CH6✔️
8RTC_GPIO8, GPIO8, TOUCH8, ADC1_CH7✔️
9RTC_GPIO9, GPIO9, TOUCH9, ADC1_CH8, FSPIHD✔️
10RTC_GPIO10, GPIO10, TOUCH10, ADC1_CH9, FSPICS0, FSPIIO4✔️
11RTC_GPIO11, GPIO11, TOUCH11, ADC2_CH0, FSPID, FSPIIO5✔️
12RTC_GPIO12, GPIO12, TOUCH12, ADC2_CH1, FSPICLK, FSPIIO6✔️
13RTC_GPIO13, GPIO13, TOUCH13, ADC2_CH2, FSPIQ, FSPIIO7✔️
14RTC_GPIO14, GPIO14, TOUCH14, ADC2_CH3, FSPIWP, FSPIDQS✔️
15RTC_GPIO15, GPIO15, U0RTS, ADC2_CH4, XTAL_32K_P✔️
16RTC_GPIO16, GPIO16, U0CTS, ADC2_CH5, XTAL_32K_N✔️
17RTC_GPIO17, GPIO17, U1TXD, ADC2_CH6, DAC_1✔️
18RTC_GPIO18, GPIO18, U1RXD, ADC2_CH7, DAC_2, CLK_OUT3✔️
19RTC_GPIO19, GPIO19, U1RTS, ADC2_CH8, CLK_OUT2, USB_D-⚠️ USB_D-
20RTC_GPIO20, GPIO20, U1CTS, ADC2_CH9, CLK_OUT1, USB_D+⚠️ USB_D+
21RTC_GPIO21, GPIO21✔️
22GPIO22✔️
23GPIO23✔️
24GPIO24✔️
25GPIO25✔️
26SPICS1, GPIO26❌ FLASH SPI
27SPIHD, GPIO27❌ FLASH SPI
28SPIWP, GPIO28❌ FLASH SPI
29SPICS0, GPIO29❌ FLASH SPI
30SPICLK, GPIO30❌ FLASH SPI
31SPIQ, GPIO31❌ FLASH SPI
32SPID, GPIO32❌ FLASH SPI
33SPIIO4, GPIO33, FSPIHD🟢 PSRAM
34SPIIO5, GPIO34, FSPICS0🟢 PSRAM
35SPIIO6, GPIO35, FSPID🟢 PSRAM
36SPIIO7, GPIO36, FSPICLK🟢 PSRAM
37SPIDQS, GPIO37, FSPIQ🟢 PSRAM
38GPIO38, FSPIWP✔️
39MTCK, GPIO39, CLK_OUT3🟢 DEBUG JTAG
40MTDO, GPIO40, CLK_OUT2🟢 DEBUG JTAG
41MTDI, GPIO41, CLK_OUT1🟢 DEBUG JTAG
42MTMS, GPIO42🟢 DEBUG JTAG
43U0TXD, GPIO43, CLK_OUT1⚠️ U0TX
44U0RXD, GPIO44, CLK_OUT2⚠️ U0RX
45GPIO45❌ STRAPPING
Pulled-down
46GPIO46❌ STRAPPING
Pulled-down
ENCHIP_PU, Reset