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.

Si estáis usando un ESP32, tenéis un resumen similar en esta entrada Qué pines puedo usar en un ESP32

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