Skip to content

Commit 9e904e2

Browse files
committed
WIP ESP32C5 support
1 parent a1ac3e6 commit 9e904e2

24 files changed

Lines changed: 338 additions & 8 deletions

File tree

lib/tinyusb

ports/espressif/Makefile

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,9 @@ CFLAGS += $(OPTIMIZATION_FLAGS)
197197
CFLAGS += $(INC) -Werror -Wall -std=gnu11 -Wl,--gc-sections $(BASE_CFLAGS) $(C_DEFS) $(CFLAGS_MOD) $(COPT) -Werror=missing-prototypes -Werror=old-style-definition
198198

199199
# Most current ESPs have nano versions of newlib in ROM so we use them.
200-
ifneq ($(IDF_TARGET),esp32c6)
200+
ifeq ($(IDF_TARGET),esp32c5)
201+
LDFLAGS += -T$(IDF_TARGET).rom.newlib.ld
202+
else ifneq ($(IDF_TARGET),esp32c6)
201203
CFLAGS += --specs=nano.specs
202204
LDFLAGS += -T$(IDF_TARGET).rom.newlib-nano.ld
203205
else
@@ -278,6 +280,20 @@ LDFLAGS += \
278280
CHIP_COMPONENTS = \
279281
esp_driver_tsens
280282

283+
else ifeq ($(IDF_TARGET),esp32c5)
284+
LDFLAGS += \
285+
-Tesp32c5.rom.phy.ld \
286+
-Tesp32c5.rom.pp.ld \
287+
-Tesp32c5.rom.net80211.ld \
288+
-Tesp32c5.rom.coexist.ld \
289+
-Tesp32c5.rom.heap.ld \
290+
-Tesp32c5.rom.systimer.ld \
291+
-Tesp32c5.rom.wdt.ld \
292+
-Tesp32c5.rom.version.ld
293+
294+
CHIP_COMPONENTS = \
295+
esp_driver_tsens
296+
281297
else ifeq ($(IDF_TARGET),esp32c6)
282298
LDFLAGS += \
283299
-Tesp32c6.rom.phy.ld \
@@ -352,6 +368,8 @@ else ifeq ($(IDF_TARGET),esp32c2)
352368
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32C2
353369
else ifeq ($(IDF_TARGET),esp32c3)
354370
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32C3
371+
else ifeq ($(IDF_TARGET),esp32c5)
372+
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32C5
355373
else ifeq ($(IDF_TARGET),esp32c6)
356374
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32C6
357375
else ifeq ($(IDF_TARGET),esp32p4)
@@ -685,6 +703,7 @@ ifneq ($(CIRCUITPY_BLEIO_NATIVE),0)
685703
BLE_IMPL_esp32s3 := esp32c3
686704
BLE_IMPL_esp32c2 := libble
687705
BLE_IMPL_esp32c3 := esp32c3
706+
BLE_IMPL_esp32c5 := libble
688707
BLE_IMPL_esp32c6 := libble
689708
BLE_IMPL_esp32h2 := libble
690709
BLE_IMPL = $(BLE_IMPL_$(IDF_TARGET))
@@ -767,10 +786,14 @@ ifeq ($(IDF_TARGET),esp32)
767786
BOOTLOADER_OFFSET = 0x1000
768787
else ifeq ($(IDF_TARGET),esp32h2)
769788
BOOTLOADER_OFFSET = 0x0
789+
else ifeq ($(IDF_TARGET),esp32h4)
790+
BOOTLOADER_OFFSET = 0x2000
770791
else ifeq ($(IDF_TARGET),esp32c2)
771792
BOOTLOADER_OFFSET = 0x0
772793
else ifeq ($(IDF_TARGET),esp32c3)
773794
BOOTLOADER_OFFSET = 0x0
795+
else ifeq ($(IDF_TARGET),esp32c5)
796+
BOOTLOADER_OFFSET = 0x2000
774797
else ifeq ($(IDF_TARGET),esp32c6)
775798
BOOTLOADER_OFFSET = 0x0
776799
else ifeq ($(IDF_TARGET),esp32p4)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2025 Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "supervisor/board.h"
8+
#include "mpconfigboard.h"
9+
#include "shared-bindings/microcontroller/Pin.h"
10+
11+
void board_init(void) {
12+
// Debug UART
13+
#ifdef DEBUG
14+
common_hal_never_reset_pin(&pin_GPIO11);
15+
common_hal_never_reset_pin(&pin_GPIO12);
16+
#endif
17+
}
18+
19+
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2025 Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#pragma once
8+
9+
// Micropython setup
10+
11+
#define MICROPY_HW_BOARD_NAME "ESP32-C5-DevKitC-1-N8R4"
12+
#define MICROPY_HW_MCU_NAME "ESP32C5"
13+
14+
#define MICROPY_HW_LED_STATUS (&pin_GPIO27)
15+
16+
#define DEFAULT_UART_BUS_RX (&pin_GPIO12)
17+
#define DEFAULT_UART_BUS_TX (&pin_GPIO11)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CIRCUITPY_CREATOR_ID = 0x000C303A
2+
CIRCUITPY_CREATION_ID = 0x00C50002
3+
4+
IDF_TARGET = esp32c5
5+
6+
CIRCUITPY_ESP_FLASH_MODE = qio
7+
CIRCUITPY_ESP_FLASH_FREQ = 80m
8+
CIRCUITPY_ESP_FLASH_SIZE = 8MB
9+
10+
CIRCUITPY_ESP_PSRAM_SIZE = 4MB
11+
CIRCUITPY_ESP_PSRAM_MODE = qio
12+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2025 Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "shared-bindings/board/__init__.h"
8+
9+
static const mp_rom_map_elem_t board_module_globals_table[] = {
10+
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
11+
12+
{ MP_ROM_QSTR(MP_QSTR_GPIO0), MP_ROM_PTR(&pin_GPIO0) },
13+
{ MP_ROM_QSTR(MP_QSTR_GPIO1), MP_ROM_PTR(&pin_GPIO1) },
14+
{ MP_ROM_QSTR(MP_QSTR_GPIO2), MP_ROM_PTR(&pin_GPIO2) },
15+
{ MP_ROM_QSTR(MP_QSTR_GPIO3), MP_ROM_PTR(&pin_GPIO3) },
16+
{ MP_ROM_QSTR(MP_QSTR_GPIO4), MP_ROM_PTR(&pin_GPIO4) },
17+
{ MP_ROM_QSTR(MP_QSTR_GPIO5), MP_ROM_PTR(&pin_GPIO5) },
18+
{ MP_ROM_QSTR(MP_QSTR_GPIO6), MP_ROM_PTR(&pin_GPIO6) },
19+
{ MP_ROM_QSTR(MP_QSTR_GPIO7), MP_ROM_PTR(&pin_GPIO7) },
20+
{ MP_ROM_QSTR(MP_QSTR_GPIO8), MP_ROM_PTR(&pin_GPIO8) },
21+
{ MP_ROM_QSTR(MP_QSTR_GPIO9), MP_ROM_PTR(&pin_GPIO9) },
22+
{ MP_ROM_QSTR(MP_QSTR_GPIO10), MP_ROM_PTR(&pin_GPIO10) },
23+
{ MP_ROM_QSTR(MP_QSTR_GPIO11), MP_ROM_PTR(&pin_GPIO11) },
24+
{ MP_ROM_QSTR(MP_QSTR_GPIO12), MP_ROM_PTR(&pin_GPIO12) },
25+
{ MP_ROM_QSTR(MP_QSTR_GPIO13), MP_ROM_PTR(&pin_GPIO13) },
26+
{ MP_ROM_QSTR(MP_QSTR_GPIO14), MP_ROM_PTR(&pin_GPIO14) },
27+
{ MP_ROM_QSTR(MP_QSTR_GPIO15), MP_ROM_PTR(&pin_GPIO15) },
28+
{ MP_ROM_QSTR(MP_QSTR_GPIO23), MP_ROM_PTR(&pin_GPIO23) },
29+
{ MP_ROM_QSTR(MP_QSTR_GPIO24), MP_ROM_PTR(&pin_GPIO24) },
30+
{ MP_ROM_QSTR(MP_QSTR_GPIO25), MP_ROM_PTR(&pin_GPIO25) },
31+
{ MP_ROM_QSTR(MP_QSTR_GPIO26), MP_ROM_PTR(&pin_GPIO26) },
32+
{ MP_ROM_QSTR(MP_QSTR_GPIO27), MP_ROM_PTR(&pin_GPIO27) },
33+
{ MP_ROM_QSTR(MP_QSTR_GPIO28), MP_ROM_PTR(&pin_GPIO28) },
34+
35+
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO11) },
36+
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO12) },
37+
38+
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO27) },
39+
40+
{ MP_ROM_QSTR(MP_QSTR_USB_DM), MP_ROM_PTR(&pin_GPIO13) },
41+
{ MP_ROM_QSTR(MP_QSTR_USB_DP), MP_ROM_PTR(&pin_GPIO14) },
42+
};
43+
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

ports/espressif/boards/espressif_esp32c5_devkitc_1_n8r4/sdkconfig

Whitespace-only changes.

ports/espressif/common-hal/alarm/pin/PinAlarm.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,9 @@ void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_ob
384384
pull_mode = GPIO_PULLUP_ONLY;
385385
}
386386
gpio_set_direction(i, GPIO_MODE_DEF_INPUT);
387+
#ifdef GPIO_PIN_MUX_REG
387388
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[i], PIN_FUNC_GPIO);
389+
#endif
388390
if (pull) {
389391
gpio_set_pull_mode(i, pull_mode);
390392
}

ports/espressif/common-hal/analogbufio/BufferedIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#elif defined(CONFIG_IDF_TARGET_ESP32S2)
3434
#define ADC_RESULT_BYTE 2
3535
#define ADC_CONV_LIMIT_EN 0
36-
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) || defined(CONFIG_IDF_TARGET_ESP32P4)
36+
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C5) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) || defined(CONFIG_IDF_TARGET_ESP32P4)
3737
#define ADC_RESULT_BYTE 4
3838
#define ADC_CONV_LIMIT_EN 0
3939
#elif defined(CONFIG_IDF_TARGET_ESP32S3)

0 commit comments

Comments
 (0)