Language: EN

que-pines-puedo-usar-esp32-s3

Which pins can I use on an ESP32-S3

The ESP32-S3 is a complex machine, with a large number of pins and functions, and many configuration options. Each pin shares more than one functionality.

Consequently, just as with the ESP8266 and the ESP32 (non-version), not all pins are usable in our projects.

Therefore, it is very useful to have a summary table with the pins and their functions, indicating which pins are safe to use in our project.

Strapping Pins

The ESP32 chip has the following strapping pins.

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

These pins affect the configuration during boot, so it’s best to avoid using them in our project.

Other pins we should avoid using

These are the other conflicting pins, and we should avoid using them.

  • ❌SPI0/1: Pins GPIO26-32 are generally used for SPI flash memory and PSRAM, and their use for other functions is not recommended.
  • ⚠️ USB_D: Pins GPIO19-20 are connected with USB_D.
  • 🟢 PSRAM: Pins GPIO33-37 cannot be used if they are also connected to SPI or PSRAM (the normal case is that they are not)
  • 🟢 JTAG: Pins GPIO39-42 cannot be used if you are using JTAG debugging for online debugging.

Those marked with 🟢 depend on the configuration of our board. Generally, we can use them.

Summary of the pins

Here is the final summary table of the pins, indicating whether we can use them safely in our project.

GPIOFUNCTIONSYOU CAN USE IT
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