que-pines-puedo-usar-esp32-s3

Qué pines puedo usar en un ESP32-S3

  • 7 min

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.

[ { “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”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 2, “name”: “GPIO2”, “funcs”: [“RTC_GPIO2”, “GPIO2”, “TOUCH2”, “ADC1_CH1”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “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”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 5, “name”: “GPIO5”, “funcs”: [“RTC_GPIO5”, “GPIO5”, “TOUCH5”, “ADC1_CH4”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 6, “name”: “GPIO6”, “funcs”: [“RTC_GPIO6”, “GPIO6”, “TOUCH6”, “ADC1_CH5”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 7, “name”: “GPIO7”, “funcs”: [“RTC_GPIO7”, “GPIO7”, “TOUCH7”, “ADC1_CH6”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 8, “name”: “GPIO8”, “funcs”: [“RTC_GPIO8”, “GPIO8”, “TOUCH8”, “ADC1_CH7”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 9, “name”: “GPIO9”, “funcs”: [“RTC_GPIO9”, “GPIO9”, “TOUCH9”, “ADC1_CH8”, “FSPIHD”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 10, “name”: “GPIO10”, “funcs”: [“RTC_GPIO10”, “GPIO10”, “TOUCH10”, “ADC1_CH9”, “FSPICS0”, “FSPIIO4”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 11, “name”: “GPIO11”, “funcs”: [“RTC_GPIO11”, “GPIO11”, “TOUCH11”, “ADC2_CH0”, “FSPID”, “FSPIIO5”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 12, “name”: “GPIO12”, “funcs”: [“RTC_GPIO12”, “GPIO12”, “TOUCH12”, “ADC2_CH1”, “FSPICLK”, “FSPIIO6”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 13, “name”: “GPIO13”, “funcs”: [“RTC_GPIO13”, “GPIO13”, “TOUCH13”, “ADC2_CH2”, “FSPIQ”, “FSPIIO7”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 14, “name”: “GPIO14”, “funcs”: [“RTC_GPIO14”, “GPIO14”, “TOUCH14”, “ADC2_CH3”, “FSPIWP”, “FSPIDQS”], “tags”: [“ADC”, “TOUCH”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 15, “name”: “GPIO15”, “funcs”: [“RTC_GPIO15”, “GPIO15”, “U0RTS”, “ADC2_CH4”, “XTAL_32K_P”], “tags”: [“ADC”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 16, “name”: “GPIO16”, “funcs”: [“RTC_GPIO16”, “GPIO16”, “U0CTS”, “ADC2_CH5”, “XTAL_32K_N”], “tags”: [“ADC”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 17, “name”: “GPIO17”, “funcs”: [“RTC_GPIO17”, “GPIO17”, “U1TXD”, “ADC2_CH6”, “DAC_1”], “tags”: [“ADC”, “DAC”], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 18, “name”: “GPIO18”, “funcs”: [“RTC_GPIO18”, “GPIO18”, “U1RXD”, “ADC2_CH7”, “DAC_2”, “CLK_OUT3”], “tags”: [“ADC”, “DAC”], “note”: “✔️ Seguro para uso general.”, “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”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 22, “name”: “GPIO22”, “funcs”: [“GPIO22”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 23, “name”: “GPIO23”, “funcs”: [“GPIO23”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 24, “name”: “GPIO24”, “funcs”: [“GPIO24”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 25, “name”: “GPIO25”, “funcs”: [“GPIO25”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “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”: “✔️ Seguro para uso general.”, “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” } ]