Guide
ESP32-C5 Pinout
The complete pin reference for the ESP32-C5: the first RISC-V Espressif chip with dual-band Wi-Fi 6, plus the exact pins you can safely reuse.
- Dual-core RISC-V
- Dual-band Wi-Fi 6
- 29 GPIOs
- 4–32 MB flash
Overview
The ESP32-C5 launched after this site’s existing photo and diagram library was put together, so there’s no product photo or illustrated pinout diagram here yet, only verified spec and GPIO tables sourced directly from the official datasheet. It’s Espressif’s first RISC-V chip with dual-band Wi-Fi 6, 2.4 GHz and 5 GHz on the same chip, not just 2.4 GHz like the C6.
Wi-Fi 6, Bluetooth LE and 802.15.4 (Thread and Zigbee) all run at the same time on this chip, like the C6, plus a 5 GHz Wi-Fi band the C6 doesn’t have.
Getting started
Board support for such a new chip can lag behind the official Arduino/ESP-IDF releases, check your installed ESP32 board package version supports the C5 before assuming a problem is your wiring.
Hello World: blink an LED
The microcontroller equivalent of “Hello World”: GPIO23 toggles once a second, shown here in two different environments. Wire an LED (with a resistor) to GPIO23, a plain general-purpose pin with no other job on this chip.
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#define LED_PIN GPIO_NUM_23
void app_main(void)
{
gpio_reset_pin(LED_PIN);
gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);
while (1) {
gpio_set_level(LED_PIN, 1);
vTaskDelay(pdMS_TO_TICKS(1000));
gpio_set_level(LED_PIN, 0);
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
#define LED_PIN 23
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
delay(1000);
}
ESP-IDF: build and flash with idf.py build flash monitor. Arduino IDE: install ESP32 board support first, see “Getting started” above.
Specifications
Official Espressif specifications for the ESP32-C5 chip and the ESP32-C5-WROOM-1 module.
Compute
| Chip | ESP32-C5 |
| CPU | Dual-processor RISC-V: high-performance core up to 240 MHz, plus a low-power core up to 48 MHz |
| SRAM | 384 KB HP + 16 KB LP |
| Flash | 4 to 32 MB, plus optional 2 or 8 MB PSRAM (variant-dependent) |
Radio
| Wi-Fi | 802.11ax (Wi-Fi 6), dual-band 2.4 + 5 GHz |
| Bluetooth | 5 LE |
| 802.15.4 | Thread 1.4, Zigbee 3.0 |
| Antenna | On-board PCB (U.FL variant available) |
Physical
| Operating voltage | 3.0V – 3.6V |
| Dimensions | 18 × 27.5 × 3.3 mm (WROOM-1) |
| Operating temperature | −40°C – +85°C |
| GPIOs | 29 on the chip (fewer usable once flash pins are excluded) |
No illustrated dimension diagram or pinout diagram yet, this chip is too new for this site’s asset library, only the verified numbers above. The module has 28 castellated pads at 1.27 mm pitch, same pitch as the WROOM-32D and C6-WROOM-1, but a longer 27.5 mm body.
GPIO quick reference
This is the full chip-level pin list. A specific WROOM-1 board may not break out every one of these to a header pin.
| GPIO | Special function | ADC | Boot state |
|---|---|---|---|
| 0 | — | — | Free |
| 1 | ADC1_CH0 | ADC1 | Free |
| 2 | JTAG MTMS, SPI FSPIQ, ADC1_CH1 | ADC1 | Strapping |
| 3 | JTAG MTDI, ADC1_CH2 | ADC1 | Strapping |
| 4 | JTAG MTCK, SPI FSPIHD, ADC1_CH3 | ADC1 | Free |
| 5 | JTAG MTDO, SPI FSPIWP, ADC1_CH4 | ADC1 | Free |
| 6 | SPI FSPICLK, ADC1_CH5 | ADC1 | Free |
| 7 | SDIO DATA1, SPI FSPID | — | Strapping |
| 8 | SDIO DATA0 | — | Free |
| 9 | SDIO CLK | — | Free |
| 10 | SDIO CMD, SPI FSPICS0 | — | Free |
| 11 | UART0 TX (default) | — | Free |
| 12 | UART0 RX (default) | — | Free |
| 13 | USB D−, SDIO DATA3 | — | Free |
| 14 | USB D+, SDIO DATA2 | — | Free |
| 15 | SPI flash (SPICS1) — reserved | — | Reserved |
| 16 | SPI flash (SPICS0) — reserved | — | Reserved |
| 17 | SPI flash (SPIQ) — reserved | — | Reserved |
| 18 | SPI flash (SPIWP) — reserved | — | Reserved |
| 19 | VDD_SPI (flash power) — reserved | — | Reserved |
| 20 | SPI flash (SPIHD) — reserved | — | Reserved |
| 21 | SPI flash (SPICLK) — reserved | — | Reserved |
| 22 | SPI flash (SPID) — reserved | — | Reserved |
| 23 | — | — | Free |
| 24 | — | — | Free |
| 25 | — | — | Strapping |
| 26 | — | — | Strapping |
| 27 | VDD_SPI voltage-select strap | — | Strapping |
| 28 | — | — | Strapping |
Flashing pins (UART0)
Used by a USB-to-serial adapter (or the onboard one) to upload firmware.
| Function | Pin | Description |
|---|---|---|
| TXD0 | GPIO11 | ESP32-C5 → PC (output) |
| RXD0 | GPIO12 | PC → ESP32-C5 (input) |
| EN | EN pin | Resets the chip |
| BOOT | GPIO26, GPIO27, GPIO28 | Held at specific levels at reset to select the boot mode, see the datasheet’s Chip Boot Mode Control table |
Safety notes
Before you wire anything up
- Never reassign the flash pins (GPIO15–GPIO22), the module won’t boot.
- GPIO2, GPIO3, GPIO7, GPIO25, GPIO26, GPIO27 and GPIO28 are strapping pins, check their boot-time state before using them as outputs.
- GPIO13 and GPIO14 are the USB Serial/JTAG D−/D+ pins, avoid reassigning them if you rely on the built-in USB console.
- Stay within the datasheet’s absolute maximum current rating per GPIO, don’t assume it matches the classic ESP32’s figure, this is a different chip.
More guides
Keep building.
From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.
All guides