que-pines-puedo-usar-esp32-s3

Which pins can I use on an ESP32-S3

  • 7 min

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

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

Therefore, it is very useful to have a summary table of 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 is best to avoid using them in our project.

Other Pins We Should Avoid Using

These are the other pins that are problematic and we should avoid using.

  • 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 to USB_D.
  • 🟢 PSRAM: Pins GPIO33-37 cannot be used if they are also connected to SPI or PSRAM (normally they are not)
  • 🟢 JTAG: Pins GPIO39-42 cannot be used if you employ in-line JTAG debugging for in-line debugging.

Those marked with 🟢 depend on our board’s configuration. In general, it is normal that we can use them.

Pin Summary

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

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