summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
Diffstat (limited to 'hw')
-rw-r--r--hw/bsp/ch32v307/family.c13
-rw-r--r--hw/bsp/ch32v307/family.cmake15
-rw-r--r--hw/bsp/ch32v307/family.mk4
3 files changed, 20 insertions, 12 deletions
diff --git a/hw/bsp/ch32v307/family.c b/hw/bsp/ch32v307/family.c
index 94578b416..0846b10a9 100644
--- a/hw/bsp/ch32v307/family.c
+++ b/hw/bsp/ch32v307/family.c
@@ -38,13 +38,13 @@
// TODO maybe having FS as port0, HS as port1
__attribute__((interrupt)) void USBHS_IRQHandler(void) {
- #if CFG_TUD_MAX_SPEED == OPT_MODE_HIGH_SPEED
+ #if CFG_TUD_WCH_USBIP_USBHS
tud_int_handler(0);
#endif
}
__attribute__((interrupt)) void OTG_FS_IRQHandler(void) {
- #if CFG_TUD_MAX_SPEED == OPT_MODE_FULL_SPEED
+ #if CFG_TUD_WCH_USBIP_USBFS
tud_int_handler(0);
#endif
}
@@ -74,15 +74,17 @@ void board_init(void) {
usart_printf_init(CFG_BOARD_UART_BAUDRATE);
-#if CFG_TUD_MAX_SPEED == OPT_MODE_HIGH_SPEED
- // Use Highspeed USB
+#ifdef CH32V30x_D8C
+ // v305/v307: Highspeed USB
RCC_USBCLK48MConfig(RCC_USBCLK48MCLKSource_USBPHY);
RCC_USBHSPLLCLKConfig(RCC_HSBHSPLLCLKSource_HSE);
RCC_USBHSConfig(RCC_USBPLL_Div2);
RCC_USBHSPLLCKREFCLKConfig(RCC_USBHSPLLCKREFCLK_4M);
RCC_USBHSPHYPLLALIVEcmd(ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_USBHS, ENABLE);
-#else
+#endif
+
+ // Fullspeed USB
uint8_t otg_div;
switch (SystemCoreClock) {
case 48000000: otg_div = RCC_OTGFSCLKSource_PLLCLK_Div1; break;
@@ -92,7 +94,6 @@ void board_init(void) {
}
RCC_OTGFSCLKConfig(otg_div);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE);
-#endif
GPIO_InitTypeDef GPIO_InitStructure = {0};
diff --git a/hw/bsp/ch32v307/family.cmake b/hw/bsp/ch32v307/family.cmake
index fd475c987..af26bfc31 100644
--- a/hw/bsp/ch32v307/family.cmake
+++ b/hw/bsp/ch32v307/family.cmake
@@ -14,7 +14,7 @@ set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/riscv_${TO
set(FAMILY_MCUS CH32V307 CACHE INTERNAL "")
set(OPENOCD_OPTION "-f ${CMAKE_CURRENT_LIST_DIR}/wch-riscv.cfg")
-# default to highspeed
+# default to highspeed, used to select USBFS / USBHS driver
if (NOT DEFINED SPEED)
set(SPEED high)
endif()
@@ -52,9 +52,16 @@ function(add_board_target BOARD_TARGET)
${SDK_SRC_DIR}/Peripheral/inc
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
)
- target_compile_definitions(${BOARD_TARGET} PUBLIC
- BOARD_TUD_MAX_SPEED=$<IF:$<STREQUAL:${SPEED},high>,OPT_MODE_HIGH_SPEED,OPT_MODE_FULL_SPEED>
- )
+ if (SPEED STREQUAL high)
+ target_compile_definitions(${BOARD_TARGET} PUBLIC
+ CFG_TUD_WCH_USBIP_USBHS=1
+# BOARD_TUD_MAX_SPEED=OPT_MODE_HIGH_SPEED
+ )
+ else ()
+ target_compile_definitions(${BOARD_TARGET} PUBLIC
+ CFG_TUD_WCH_USBIP_USBFS=1
+ )
+ endif ()
update_board(${BOARD_TARGET})
diff --git a/hw/bsp/ch32v307/family.mk b/hw/bsp/ch32v307/family.mk
index 2dbe0c46a..30a070a9b 100644
--- a/hw/bsp/ch32v307/family.mk
+++ b/hw/bsp/ch32v307/family.mk
@@ -26,11 +26,11 @@ CFLAGS += \
-DCFG_TUSB_MCU=OPT_MCU_CH32V307 \
ifeq ($(SPEED),high)
- CFLAGS += -DBOARD_TUD_MAX_SPEED=OPT_MODE_HIGH_SPEED
$(info "Using USBHS driver for HighSpeed mode")
+ CFLAGS += -DCFG_TUD_WCH_USBIP_USBHS=1
else
- CFLAGS += -DBOARD_TUD_MAX_SPEED=OPT_MODE_FULL_SPEED
$(info "Using USBFS driver for FullSpeed mode")
+ CFLAGS += -DCFG_TUD_WCH_USBIP_USBFS=1
endif
LDFLAGS_GCC += \