From 8c22c1a3b78b55c304437704e875990bc590ed31 Mon Sep 17 00:00:00 2001 From: deadprogram Date: Mon, 16 Mar 2026 17:35:53 +0100 Subject: [PATCH] feature: add support for ESP32-C5 Signed-off-by: deadprogram --- README.md | 1 + pkg/espflasher/chip.go | 4 +++ pkg/espflasher/target_esp32c5.go | 42 ++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 pkg/espflasher/target_esp32c5.go diff --git a/README.md b/README.md index de78816..b523bb5 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ A Go command-line tool and library for flashing firmware to Espressif ESP8266 an - ESP32-S3 - ESP32-C2 (ESP8684) - ESP32-C3 +- ESP32-C5 - ESP32-C6 - ESP32-H2 diff --git a/pkg/espflasher/chip.go b/pkg/espflasher/chip.go index d96b34b..83b3115 100644 --- a/pkg/espflasher/chip.go +++ b/pkg/espflasher/chip.go @@ -12,6 +12,7 @@ const ( ChipESP32S3 ChipESP32C2 ChipESP32C3 + ChipESP32C5 ChipESP32C6 ChipESP32H2 ChipAuto // Auto-detect chip type @@ -32,6 +33,8 @@ func (c ChipType) String() string { return "ESP32-C2" case ChipESP32C3: return "ESP32-C3" + case ChipESP32C5: + return "ESP32-C5" case ChipESP32C6: return "ESP32-C6" case ChipESP32H2: @@ -125,6 +128,7 @@ var chipDefs = map[ChipType]*chipDef{ ChipESP32S3: defESP32S3, ChipESP32C2: defESP32C2, ChipESP32C3: defESP32C3, + ChipESP32C5: defESP32C5, ChipESP32C6: defESP32C6, ChipESP32H2: defESP32H2, } diff --git a/pkg/espflasher/target_esp32c5.go b/pkg/espflasher/target_esp32c5.go new file mode 100644 index 0000000..8db444e --- /dev/null +++ b/pkg/espflasher/target_esp32c5.go @@ -0,0 +1,42 @@ +package espflasher + +// ESP32-C5 target definition. +// Reference: https://github.com/espressif/esptool/blob/master/esptool/targets/esp32c5.py + +var defESP32C5 = &chipDef{ + ChipType: ChipESP32C5, + Name: "ESP32-C5", + ImageChipID: 23, + UsesMagicValue: false, // Uses chip ID + + SPIRegBase: 0x60003000, + SPIUSROffs: 0x18, + SPIUSR1Offs: 0x1C, + SPIUSR2Offs: 0x20, + SPIMOSIOffs: 0x24, + SPIMISOOffs: 0x98, + SPIW0Offs: 0x58, + + SPIMISODLenOffs: 0x28, + SPIMOSIDLenOffs: 0x24, + + SPIAddrRegMSB: true, + + UARTDateReg: 0x60000078, + UARTClkDiv: 0x60000014, + XTALClkDiv: 1, + + BootloaderFlashOffset: 0x2000, + + SupportsEncryptedFlash: true, + ROMHasCompressedFlash: true, + ROMHasChangeBaud: true, + + FlashFrequency: map[string]byte{ + "80m": 0xF, + "40m": 0x0, + "20m": 0x2, + }, + + FlashSizes: defaultFlashSizes(), +}