From d0fda78d971be1515ccf7fa847add701f2eb726e Mon Sep 17 00:00:00 2001 From: 21km43 <21km43@gmail.com> Date: Mon, 9 Sep 2024 23:03:29 +0900 Subject: [PATCH 01/28] add ch32x035 and ch32l103 support --- .../ports/ch32/Adafruit_TinyUSB_ch32.cpp | 25 ++++++++++++++++++- src/arduino/ports/ch32/tusb_config_ch32.h | 4 +++ src/common/tusb_mcu.h | 10 ++++++++ src/portable/wch/ch32_usbfs_reg.h | 4 +++ src/tusb_option.h | 4 ++- 5 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index 03e4dcdf..f4e2d366 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -25,7 +25,7 @@ #include "tusb_option.h" #if CFG_TUD_ENABLED && \ - (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x)) + (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) || defied(CH32X035) || defined(CH32L10x)) #include "Arduino.h" #include "arduino/Adafruit_USBD_Device.h" @@ -64,6 +64,9 @@ USBWakeUp_IRQHandler(void) { #if defined(CH32V10x) #define USBHDWakeUp_IRQHandler USBWakeUp_IRQHandler +#elif defined(CH32X035) || defined(CH32L10x) +#define USBHD_IRQHandler USBFS_IRQHandler +#define USBHDWakeUp_IRQHandler USBFSWakeUp_IRQHandler #endif __attribute__((interrupt("WCH-Interrupt-fast"))) void USBHD_IRQHandler(void) { @@ -114,6 +117,8 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBHD #endif +#if defined(CH32V20x) || defined(CH32V30x) || defined(CH32L10x) + uint8_t usb_div; switch (SystemCoreClock) { #if defined(CH32V20x) || defined(CH32V30x) @@ -133,6 +138,16 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { case 72000000: usb_div = RCC_USBCLKSource_PLLCLK_1Div5; break; +#elif defined(CH32L10x) + case 48000000: + usb_div = RCC_USBCLKSource_PLLCLK_Div1; + break; + case 72000000: + usb_div = RCC_USBCLKSource_PLLCLK_1Div5; + break; + case 96000000: + usb_div = RCC_USBCLKSource_PLLCLK_Div2; + break; #endif default: return; // unsupported @@ -144,11 +159,19 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { RCC_USBCLKConfig(usb_div); #endif +#endif + #if CFG_TUD_WCH_USBIP_FSDEV RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE); #endif #if CFG_TUD_WCH_USBIP_USBFS +#if defined(CH32X035) +#define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBFS +#elif defined(CH32L10x) +#define RCC_AHBPeriph_OTG_FS RCC_HBPeriph_USBFS +#define RCC_AHBPeriphClockCmd RCC_HBPeriphClockCmd +#endif RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE); #endif #endif diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index 15915662..7cd68016 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -39,6 +39,10 @@ extern "C" { #define CFG_TUSB_MCU OPT_MCU_CH32V20X #elif defined(CH32V30x) #define CFG_TUSB_MCU OPT_MCU_CH32V307 +#elif defined(CH32X035) +#define CFG_TUSB_MCU OPT_MCU_CH32X035 +#elif defined(CH32L10x) +#define CFG_TUSB_MCU OPT_MCU_CH32L10X #endif #define CFG_TUSB_OS OPT_OS_NONE diff --git a/src/common/tusb_mcu.h b/src/common/tusb_mcu.h index a89d30c7..f8957f20 100644 --- a/src/common/tusb_mcu.h +++ b/src/common/tusb_mcu.h @@ -473,6 +473,16 @@ #define TUP_RHPORT_HIGHSPEED CFG_TUD_WCH_USBIP_USBHS #define TUP_DCD_ENDPOINT_MAX (CFG_TUD_WCH_USBIP_USBHS ? 16 : 8) +#elif TU_CHECK_MCU(OPT_MCU_CH32X035) || TU_CHECK_MCU(OPT_MCU_CH32L10X) + // x035 and l103 support USBFS only + #define TUP_USBIP_WCH_USBFS + + #if !defined(CFG_TUD_WCH_USBIP_USBFS) + #define CFG_TUD_WCH_USBIP_USBFS 1 + #endif + + #define TUP_DCD_ENDPOINT_MAX 8 + //--------------------------------------------------------------------+ // Analog Devices //--------------------------------------------------------------------+ diff --git a/src/portable/wch/ch32_usbfs_reg.h b/src/portable/wch/ch32_usbfs_reg.h index 68be64f5..06361c86 100644 --- a/src/portable/wch/ch32_usbfs_reg.h +++ b/src/portable/wch/ch32_usbfs_reg.h @@ -97,6 +97,10 @@ #elif CFG_TUSB_MCU == OPT_MCU_CH32V307 #include #define USBHD_IRQn OTG_FS_IRQn +#elif CFG_TUSB_MCU == OPT_MCU_CH32X035 + #include +#elif CFG_TUSB_MCU == OPT_MCU_CH32L10X + #include #endif #ifdef __GNUC__ diff --git a/src/tusb_option.h b/src/tusb_option.h index 42f1b6be..4f0b0f5d 100644 --- a/src/tusb_option.h +++ b/src/tusb_option.h @@ -181,8 +181,10 @@ // WCH #define OPT_MCU_CH32V307 2200 ///< WCH CH32V307 #define OPT_MCU_CH32F20X 2210 ///< WCH CH32F20x -#define OPT_MCU_CH32V20X 2220 ///< WCH CH32V20X +#define OPT_MCU_CH32V20X 2220 ///< WCH CH32V20x #define OPT_MCU_CH32V103 2230 ///< WCH CH32V103 +#define OPT_MCU_CH32X035 2240 ///< WCH CH32X035 +#define OPT_MCU_CH32L10X 2250 ///< WCH CH32L10x // NXP LPC MCX #define OPT_MCU_MCXN9 2300 ///< NXP MCX N9 Series From 9c842c58d30576051b0083e73e5531495b7f6bbe Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Tue, 10 Sep 2024 13:15:56 +0900 Subject: [PATCH 02/28] typo fix Adafruit_TinyUSB_ch32.cpp --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index f4e2d366..a08b4b06 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -25,7 +25,7 @@ #include "tusb_option.h" #if CFG_TUD_ENABLED && \ - (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) || defied(CH32X035) || defined(CH32L10x)) + (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) || defined(CH32X035) || defined(CH32L10x)) #include "Arduino.h" #include "arduino/Adafruit_USBD_Device.h" From e8e501fa08ffbea7358de8a8770d26f1ba42a816 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Tue, 10 Sep 2024 13:29:52 +0900 Subject: [PATCH 03/28] typo fix in Adafruit_TinyUSB_ch32.cpp --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index a08b4b06..df5032bf 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -143,7 +143,7 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { usb_div = RCC_USBCLKSource_PLLCLK_Div1; break; case 72000000: - usb_div = RCC_USBCLKSource_PLLCLK_1Div5; + usb_div = RCC_USBCLKSource_PLLCLK_Div1_5; break; case 96000000: usb_div = RCC_USBCLKSource_PLLCLK_Div2; From be6aed7c5bc466f5aae52ea32e724c75323198d4 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Tue, 10 Sep 2024 13:44:35 +0900 Subject: [PATCH 04/28] add macro for ch32l103 --- src/portable/wch/ch32_usbfs_reg.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/portable/wch/ch32_usbfs_reg.h b/src/portable/wch/ch32_usbfs_reg.h index 06361c86..cf7357e7 100644 --- a/src/portable/wch/ch32_usbfs_reg.h +++ b/src/portable/wch/ch32_usbfs_reg.h @@ -97,10 +97,10 @@ #elif CFG_TUSB_MCU == OPT_MCU_CH32V307 #include #define USBHD_IRQn OTG_FS_IRQn -#elif CFG_TUSB_MCU == OPT_MCU_CH32X035 - #include #elif CFG_TUSB_MCU == OPT_MCU_CH32L10X #include + #define USBOTG_FS USBFSD + #define USBHD_IRQn USBFS_IRQn #endif #ifdef __GNUC__ From 84e21e8556fcbf8b9e29bef8edb0985760686b2a Mon Sep 17 00:00:00 2001 From: 21km43 <21km43@gmail.com> Date: Tue, 10 Sep 2024 13:43:43 +0900 Subject: [PATCH 05/28] remove ch32x035 --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 8 +++----- src/arduino/ports/ch32/tusb_config_ch32.h | 2 -- src/common/tusb_mcu.h | 2 +- src/tusb_option.h | 3 +-- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index df5032bf..eae0fad7 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -25,7 +25,7 @@ #include "tusb_option.h" #if CFG_TUD_ENABLED && \ - (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) || defined(CH32X035) || defined(CH32L10x)) + (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) || defined(CH32L10x)) #include "Arduino.h" #include "arduino/Adafruit_USBD_Device.h" @@ -64,7 +64,7 @@ USBWakeUp_IRQHandler(void) { #if defined(CH32V10x) #define USBHDWakeUp_IRQHandler USBWakeUp_IRQHandler -#elif defined(CH32X035) || defined(CH32L10x) +#elif defined(CH32L10x) #define USBHD_IRQHandler USBFS_IRQHandler #define USBHDWakeUp_IRQHandler USBFSWakeUp_IRQHandler #endif @@ -166,9 +166,7 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #endif #if CFG_TUD_WCH_USBIP_USBFS -#if defined(CH32X035) -#define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBFS -#elif defined(CH32L10x) +#if defined(CH32L10x) #define RCC_AHBPeriph_OTG_FS RCC_HBPeriph_USBFS #define RCC_AHBPeriphClockCmd RCC_HBPeriphClockCmd #endif diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index 7cd68016..907f537f 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -39,8 +39,6 @@ extern "C" { #define CFG_TUSB_MCU OPT_MCU_CH32V20X #elif defined(CH32V30x) #define CFG_TUSB_MCU OPT_MCU_CH32V307 -#elif defined(CH32X035) -#define CFG_TUSB_MCU OPT_MCU_CH32X035 #elif defined(CH32L10x) #define CFG_TUSB_MCU OPT_MCU_CH32L10X #endif diff --git a/src/common/tusb_mcu.h b/src/common/tusb_mcu.h index f8957f20..cf65589a 100644 --- a/src/common/tusb_mcu.h +++ b/src/common/tusb_mcu.h @@ -473,7 +473,7 @@ #define TUP_RHPORT_HIGHSPEED CFG_TUD_WCH_USBIP_USBHS #define TUP_DCD_ENDPOINT_MAX (CFG_TUD_WCH_USBIP_USBHS ? 16 : 8) -#elif TU_CHECK_MCU(OPT_MCU_CH32X035) || TU_CHECK_MCU(OPT_MCU_CH32L10X) +#elif TU_CHECK_MCU(OPT_MCU_CH32L10X) // x035 and l103 support USBFS only #define TUP_USBIP_WCH_USBFS diff --git a/src/tusb_option.h b/src/tusb_option.h index 4f0b0f5d..da842a00 100644 --- a/src/tusb_option.h +++ b/src/tusb_option.h @@ -183,8 +183,7 @@ #define OPT_MCU_CH32F20X 2210 ///< WCH CH32F20x #define OPT_MCU_CH32V20X 2220 ///< WCH CH32V20x #define OPT_MCU_CH32V103 2230 ///< WCH CH32V103 -#define OPT_MCU_CH32X035 2240 ///< WCH CH32X035 -#define OPT_MCU_CH32L10X 2250 ///< WCH CH32L10x +#define OPT_MCU_CH32L10X 2240 ///< WCH CH32L10x // NXP LPC MCX #define OPT_MCU_MCXN9 2300 ///< NXP MCX N9 Series From 5ae850b97e32388da95b7c5f97b0758077af1546 Mon Sep 17 00:00:00 2001 From: 21km43 <21km43@gmail.com> Date: Tue, 10 Sep 2024 13:45:29 +0900 Subject: [PATCH 06/28] remove unused macro --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index eae0fad7..d1da1c32 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -117,8 +117,6 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBHD #endif -#if defined(CH32V20x) || defined(CH32V30x) || defined(CH32L10x) - uint8_t usb_div; switch (SystemCoreClock) { #if defined(CH32V20x) || defined(CH32V30x) @@ -159,8 +157,6 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { RCC_USBCLKConfig(usb_div); #endif -#endif - #if CFG_TUD_WCH_USBIP_FSDEV RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE); #endif From 173e45240bf15498992dbb50b45bf3fef59f10ef Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Thu, 12 Sep 2024 01:28:51 +0900 Subject: [PATCH 07/28] clang format --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index d1da1c32..b3060aca 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -24,8 +24,8 @@ #include "tusb_option.h" -#if CFG_TUD_ENABLED && \ - (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) || defined(CH32L10x)) +#if CFG_TUD_ENABLED && (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || \ + defined(CH32V30x) || defined(CH32L10x)) #include "Arduino.h" #include "arduino/Adafruit_USBD_Device.h" From 9c10fe81b674fd417c4acd4dfae550dafac41c58 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Thu, 12 Sep 2024 16:12:48 +0900 Subject: [PATCH 08/28] define fix --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index b3060aca..e1aa29b7 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -60,7 +60,7 @@ USBWakeUp_IRQHandler(void) { // USBFS #if CFG_TUD_WCH_USBIP_USBFS -#if defined(CH32V10x) || defined(CH32V20x) +#if defined(CH32V10x) || defined(CH32V20x) || defined(CH32L10x) #if defined(CH32V10x) #define USBHDWakeUp_IRQHandler USBWakeUp_IRQHandler @@ -115,6 +115,9 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { EXTEN->EXTEN_CTR &= ~EXTEN_USB_5V_SEL; #define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBHD +#elif defined(CH32L10x) +#define RCC_AHBPeriph_OTG_FS RCC_HBPeriph_USBFS +#define RCC_AHBPeriphClockCmd RCC_HBPeriphClockCmd #endif uint8_t usb_div; @@ -162,10 +165,6 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #endif #if CFG_TUD_WCH_USBIP_USBFS -#if defined(CH32L10x) -#define RCC_AHBPeriph_OTG_FS RCC_HBPeriph_USBFS -#define RCC_AHBPeriphClockCmd RCC_HBPeriphClockCmd -#endif RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE); #endif #endif From 7fb912fe0446a481e57623b0d72d46bfd9c514a5 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Thu, 12 Sep 2024 20:00:45 +0900 Subject: [PATCH 09/28] usb_div size fix --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index e1aa29b7..80a87b90 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -120,7 +120,7 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #define RCC_AHBPeriphClockCmd RCC_HBPeriphClockCmd #endif - uint8_t usb_div; + uint32_t usb_div; switch (SystemCoreClock) { #if defined(CH32V20x) || defined(CH32V30x) case 48000000: From e73bcf47f9460d755a1387f359c9310b93f30113 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sun, 15 Sep 2024 18:42:43 +0900 Subject: [PATCH 10/28] add pragma warning --- src/arduino/ports/ch32/tusb_config_ch32.h | 3 ++- src/common/tusb_mcu.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index 907f537f..5d85da86 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -34,13 +34,14 @@ extern "C" { //-------------------------------------------------------------------- #if defined(CH32V10x) #define CFG_TUSB_MCU OPT_MCU_CH32V103 -#warnning "CH32v103 is not working yet" +#warnning "CH32V103 is not working yet" #elif defined(CH32V20x) #define CFG_TUSB_MCU OPT_MCU_CH32V20X #elif defined(CH32V30x) #define CFG_TUSB_MCU OPT_MCU_CH32V307 #elif defined(CH32L10x) #define CFG_TUSB_MCU OPT_MCU_CH32L10X +#warnning "CH32L103 is not working yet" #endif #define CFG_TUSB_OS OPT_OS_NONE diff --git a/src/common/tusb_mcu.h b/src/common/tusb_mcu.h index cf65589a..afabae61 100644 --- a/src/common/tusb_mcu.h +++ b/src/common/tusb_mcu.h @@ -474,7 +474,7 @@ #define TUP_DCD_ENDPOINT_MAX (CFG_TUD_WCH_USBIP_USBHS ? 16 : 8) #elif TU_CHECK_MCU(OPT_MCU_CH32L10X) - // x035 and l103 support USBFS only + // l103 support USBFS only #define TUP_USBIP_WCH_USBFS #if !defined(CFG_TUD_WCH_USBIP_USBFS) From 05c213e8d0a6c10c46f7431c9f30607f001c7f93 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sun, 15 Sep 2024 21:09:10 +0900 Subject: [PATCH 11/28] Typo tusb_config_ch32.h --- src/arduino/ports/ch32/tusb_config_ch32.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index 5d85da86..9b41ebd8 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -34,14 +34,14 @@ extern "C" { //-------------------------------------------------------------------- #if defined(CH32V10x) #define CFG_TUSB_MCU OPT_MCU_CH32V103 -#warnning "CH32V103 is not working yet" +#warning "CH32V103 is not working yet" #elif defined(CH32V20x) #define CFG_TUSB_MCU OPT_MCU_CH32V20X #elif defined(CH32V30x) #define CFG_TUSB_MCU OPT_MCU_CH32V307 #elif defined(CH32L10x) #define CFG_TUSB_MCU OPT_MCU_CH32L10X -#warnning "CH32L103 is not working yet" +#warning "CH32L103 is not working yet" #endif #define CFG_TUSB_OS OPT_OS_NONE From 5360d1728eb103206559ebd566924bd3d4036b31 Mon Sep 17 00:00:00 2001 From: 21km43 <21km43@gmail.com> Date: Mon, 9 Sep 2024 23:03:29 +0900 Subject: [PATCH 12/28] add ch32x035 and ch32l103 support typo fix Adafruit_TinyUSB_ch32.cpp typo fix in Adafruit_TinyUSB_ch32.cpp add macro for ch32l103 remove ch32x035 remove unused macro clang format define fix usb_div size fix add pragma warning Typo tusb_config_ch32.h --- .../ports/ch32/Adafruit_TinyUSB_ch32.cpp | 24 +++++++++++++++---- src/arduino/ports/ch32/tusb_config_ch32.h | 5 +++- src/common/tusb_mcu.h | 10 ++++++++ src/portable/wch/ch32_usbfs_reg.h | 4 ++++ src/tusb_option.h | 3 ++- 5 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index 03e4dcdf..80a87b90 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -24,8 +24,8 @@ #include "tusb_option.h" -#if CFG_TUD_ENABLED && \ - (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x)) +#if CFG_TUD_ENABLED && (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || \ + defined(CH32V30x) || defined(CH32L10x)) #include "Arduino.h" #include "arduino/Adafruit_USBD_Device.h" @@ -60,10 +60,13 @@ USBWakeUp_IRQHandler(void) { // USBFS #if CFG_TUD_WCH_USBIP_USBFS -#if defined(CH32V10x) || defined(CH32V20x) +#if defined(CH32V10x) || defined(CH32V20x) || defined(CH32L10x) #if defined(CH32V10x) #define USBHDWakeUp_IRQHandler USBWakeUp_IRQHandler +#elif defined(CH32L10x) +#define USBHD_IRQHandler USBFS_IRQHandler +#define USBHDWakeUp_IRQHandler USBFSWakeUp_IRQHandler #endif __attribute__((interrupt("WCH-Interrupt-fast"))) void USBHD_IRQHandler(void) { @@ -112,9 +115,12 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { EXTEN->EXTEN_CTR &= ~EXTEN_USB_5V_SEL; #define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBHD +#elif defined(CH32L10x) +#define RCC_AHBPeriph_OTG_FS RCC_HBPeriph_USBFS +#define RCC_AHBPeriphClockCmd RCC_HBPeriphClockCmd #endif - uint8_t usb_div; + uint32_t usb_div; switch (SystemCoreClock) { #if defined(CH32V20x) || defined(CH32V30x) case 48000000: @@ -133,6 +139,16 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { case 72000000: usb_div = RCC_USBCLKSource_PLLCLK_1Div5; break; +#elif defined(CH32L10x) + case 48000000: + usb_div = RCC_USBCLKSource_PLLCLK_Div1; + break; + case 72000000: + usb_div = RCC_USBCLKSource_PLLCLK_Div1_5; + break; + case 96000000: + usb_div = RCC_USBCLKSource_PLLCLK_Div2; + break; #endif default: return; // unsupported diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index 15915662..9b41ebd8 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -34,11 +34,14 @@ extern "C" { //-------------------------------------------------------------------- #if defined(CH32V10x) #define CFG_TUSB_MCU OPT_MCU_CH32V103 -#warnning "CH32v103 is not working yet" +#warning "CH32V103 is not working yet" #elif defined(CH32V20x) #define CFG_TUSB_MCU OPT_MCU_CH32V20X #elif defined(CH32V30x) #define CFG_TUSB_MCU OPT_MCU_CH32V307 +#elif defined(CH32L10x) +#define CFG_TUSB_MCU OPT_MCU_CH32L10X +#warning "CH32L103 is not working yet" #endif #define CFG_TUSB_OS OPT_OS_NONE diff --git a/src/common/tusb_mcu.h b/src/common/tusb_mcu.h index a89d30c7..afabae61 100644 --- a/src/common/tusb_mcu.h +++ b/src/common/tusb_mcu.h @@ -473,6 +473,16 @@ #define TUP_RHPORT_HIGHSPEED CFG_TUD_WCH_USBIP_USBHS #define TUP_DCD_ENDPOINT_MAX (CFG_TUD_WCH_USBIP_USBHS ? 16 : 8) +#elif TU_CHECK_MCU(OPT_MCU_CH32L10X) + // l103 support USBFS only + #define TUP_USBIP_WCH_USBFS + + #if !defined(CFG_TUD_WCH_USBIP_USBFS) + #define CFG_TUD_WCH_USBIP_USBFS 1 + #endif + + #define TUP_DCD_ENDPOINT_MAX 8 + //--------------------------------------------------------------------+ // Analog Devices //--------------------------------------------------------------------+ diff --git a/src/portable/wch/ch32_usbfs_reg.h b/src/portable/wch/ch32_usbfs_reg.h index 68be64f5..cf7357e7 100644 --- a/src/portable/wch/ch32_usbfs_reg.h +++ b/src/portable/wch/ch32_usbfs_reg.h @@ -97,6 +97,10 @@ #elif CFG_TUSB_MCU == OPT_MCU_CH32V307 #include #define USBHD_IRQn OTG_FS_IRQn +#elif CFG_TUSB_MCU == OPT_MCU_CH32L10X + #include + #define USBOTG_FS USBFSD + #define USBHD_IRQn USBFS_IRQn #endif #ifdef __GNUC__ diff --git a/src/tusb_option.h b/src/tusb_option.h index 42f1b6be..da842a00 100644 --- a/src/tusb_option.h +++ b/src/tusb_option.h @@ -181,8 +181,9 @@ // WCH #define OPT_MCU_CH32V307 2200 ///< WCH CH32V307 #define OPT_MCU_CH32F20X 2210 ///< WCH CH32F20x -#define OPT_MCU_CH32V20X 2220 ///< WCH CH32V20X +#define OPT_MCU_CH32V20X 2220 ///< WCH CH32V20x #define OPT_MCU_CH32V103 2230 ///< WCH CH32V103 +#define OPT_MCU_CH32L10X 2240 ///< WCH CH32L10x // NXP LPC MCX #define OPT_MCU_MCXN9 2300 ///< NXP MCX N9 Series From ddf059ad32fdb6dbc7192130f67cc35fa674d162 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Wed, 25 Sep 2024 20:42:38 +0900 Subject: [PATCH 13/28] ch32x035 --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 12 +++++++++--- src/arduino/ports/ch32/tusb_config_ch32.h | 2 ++ src/common/tusb_mcu.h | 4 ++-- src/portable/wch/ch32_usbfs_reg.h | 5 +++++ src/tusb_option.h | 3 ++- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index 80a87b90..bd31f942 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -25,7 +25,8 @@ #include "tusb_option.h" #if CFG_TUD_ENABLED && (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || \ - defined(CH32V30x) || defined(CH32L10x)) + defined(CH32V30x) || defined(CH32X035) || \ + defined(CH32L10x)) #include "Arduino.h" #include "arduino/Adafruit_USBD_Device.h" @@ -64,7 +65,7 @@ USBWakeUp_IRQHandler(void) { #if defined(CH32V10x) #define USBHDWakeUp_IRQHandler USBWakeUp_IRQHandler -#elif defined(CH32L10x) +#elif defined(CH32X035) || defined(CH32L10x) #define USBHD_IRQHandler USBFS_IRQHandler #define USBHDWakeUp_IRQHandler USBFSWakeUp_IRQHandler #endif @@ -115,6 +116,8 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { EXTEN->EXTEN_CTR &= ~EXTEN_USB_5V_SEL; #define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBHD +#elif defined(CH32X035) +#define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBFS #elif defined(CH32L10x) #define RCC_AHBPeriph_OTG_FS RCC_HBPeriph_USBFS #define RCC_AHBPeriphClockCmd RCC_HBPeriphClockCmd @@ -139,6 +142,9 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { case 72000000: usb_div = RCC_USBCLKSource_PLLCLK_1Div5; break; +#elif defined(CH32X035) + case 48000000: + break; #elif defined(CH32L10x) case 48000000: usb_div = RCC_USBCLKSource_PLLCLK_Div1; @@ -156,7 +162,7 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #if defined(CH32V30x) RCC_OTGFSCLKConfig(usb_div); -#else +#else !defined(CH32X035) RCC_USBCLKConfig(usb_div); #endif diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index 9b41ebd8..d56d0367 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -39,6 +39,8 @@ extern "C" { #define CFG_TUSB_MCU OPT_MCU_CH32V20X #elif defined(CH32V30x) #define CFG_TUSB_MCU OPT_MCU_CH32V307 +#elif defined(CH32X035) +#define CFG_TUSB_MCU OPT_MCU_CH32X035 #elif defined(CH32L10x) #define CFG_TUSB_MCU OPT_MCU_CH32L10X #warning "CH32L103 is not working yet" diff --git a/src/common/tusb_mcu.h b/src/common/tusb_mcu.h index afabae61..f8957f20 100644 --- a/src/common/tusb_mcu.h +++ b/src/common/tusb_mcu.h @@ -473,8 +473,8 @@ #define TUP_RHPORT_HIGHSPEED CFG_TUD_WCH_USBIP_USBHS #define TUP_DCD_ENDPOINT_MAX (CFG_TUD_WCH_USBIP_USBHS ? 16 : 8) -#elif TU_CHECK_MCU(OPT_MCU_CH32L10X) - // l103 support USBFS only +#elif TU_CHECK_MCU(OPT_MCU_CH32X035) || TU_CHECK_MCU(OPT_MCU_CH32L10X) + // x035 and l103 support USBFS only #define TUP_USBIP_WCH_USBFS #if !defined(CFG_TUD_WCH_USBIP_USBFS) diff --git a/src/portable/wch/ch32_usbfs_reg.h b/src/portable/wch/ch32_usbfs_reg.h index cf7357e7..7f9aac9f 100644 --- a/src/portable/wch/ch32_usbfs_reg.h +++ b/src/portable/wch/ch32_usbfs_reg.h @@ -97,6 +97,11 @@ #elif CFG_TUSB_MCU == OPT_MCU_CH32V307 #include #define USBHD_IRQn OTG_FS_IRQn +#elif CFG_TUSB_MCU == OPT_MCU_CH32X035 + #include + #define USBOTG_FS USBFSD + #define USBHD_IRQn USBFS_IRQn +#endif #elif CFG_TUSB_MCU == OPT_MCU_CH32L10X #include #define USBOTG_FS USBFSD diff --git a/src/tusb_option.h b/src/tusb_option.h index da842a00..4f0b0f5d 100644 --- a/src/tusb_option.h +++ b/src/tusb_option.h @@ -183,7 +183,8 @@ #define OPT_MCU_CH32F20X 2210 ///< WCH CH32F20x #define OPT_MCU_CH32V20X 2220 ///< WCH CH32V20x #define OPT_MCU_CH32V103 2230 ///< WCH CH32V103 -#define OPT_MCU_CH32L10X 2240 ///< WCH CH32L10x +#define OPT_MCU_CH32X035 2240 ///< WCH CH32X035 +#define OPT_MCU_CH32L10X 2250 ///< WCH CH32L10x // NXP LPC MCX #define OPT_MCU_MCXN9 2300 ///< NXP MCX N9 Series From f54331b636f169046dc2176eb329df5aec12302b Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Wed, 25 Sep 2024 20:46:03 +0900 Subject: [PATCH 14/28] clang --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index bd31f942..8e5179c5 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -24,9 +24,9 @@ #include "tusb_option.h" -#if CFG_TUD_ENABLED && (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || \ - defined(CH32V30x) || defined(CH32X035) || \ - defined(CH32L10x)) +#if CFG_TUD_ENABLED && \ + (defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) || \ + defined(CH32X035) || defined(CH32L10x)) #include "Arduino.h" #include "arduino/Adafruit_USBD_Device.h" From ddfd21daa94f66783dd6d1b93ec39b82af1bc29a Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Thu, 26 Sep 2024 16:18:49 +0900 Subject: [PATCH 15/28] typo fix --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 2 +- src/portable/wch/ch32_usbfs_reg.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index 8e5179c5..4530fee9 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -162,7 +162,7 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #if defined(CH32V30x) RCC_OTGFSCLKConfig(usb_div); -#else !defined(CH32X035) +#elif !defined(CH32X035) RCC_USBCLKConfig(usb_div); #endif diff --git a/src/portable/wch/ch32_usbfs_reg.h b/src/portable/wch/ch32_usbfs_reg.h index 7f9aac9f..589634ed 100644 --- a/src/portable/wch/ch32_usbfs_reg.h +++ b/src/portable/wch/ch32_usbfs_reg.h @@ -101,7 +101,6 @@ #include #define USBOTG_FS USBFSD #define USBHD_IRQn USBFS_IRQn -#endif #elif CFG_TUSB_MCU == OPT_MCU_CH32L10X #include #define USBOTG_FS USBFSD From a6f34cad5fffc4043c86a5a0170e56c5a748c6e5 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 12:31:19 +0900 Subject: [PATCH 16/28] rename macros for update sdk --- .../ports/ch32/Adafruit_TinyUSB_ch32.cpp | 28 +++------- src/portable/wch/ch32_usbfs_reg.h | 9 +--- src/portable/wch/dcd_ch32_usbfs.c | 52 +++++++++---------- 3 files changed, 34 insertions(+), 55 deletions(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index 4530fee9..239cf709 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -64,24 +64,14 @@ USBWakeUp_IRQHandler(void) { #if defined(CH32V10x) || defined(CH32V20x) || defined(CH32L10x) #if defined(CH32V10x) -#define USBHDWakeUp_IRQHandler USBWakeUp_IRQHandler -#elif defined(CH32X035) || defined(CH32L10x) -#define USBHD_IRQHandler USBFS_IRQHandler -#define USBHDWakeUp_IRQHandler USBFSWakeUp_IRQHandler +#define USBFSWakeUp_IRQHandler USBWakeUp_IRQHandler #endif - -__attribute__((interrupt("WCH-Interrupt-fast"))) void USBHD_IRQHandler(void) { +__attribute__((interrupt("WCH-Interrupt-fast"))) void USBFS_IRQHandler(void) { tud_int_handler(0); } __attribute__((interrupt("WCH-Interrupt-fast"))) void -USBHDWakeUp_IRQHandler(void) { - tud_int_handler(0); -} -#endif - -#ifdef CH32V30x -__attribute__((interrupt("WCH-Interrupt-fast"))) void OTG_FS_IRQHandler(void) { +USBFSWakeUp_IRQHandler(void) { tud_int_handler(0); } #endif @@ -114,12 +104,8 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #if defined(CH32V10x) EXTEN->EXTEN_CTR |= EXTEN_USBHD_IO_EN; EXTEN->EXTEN_CTR &= ~EXTEN_USB_5V_SEL; - -#define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBHD -#elif defined(CH32X035) -#define RCC_AHBPeriph_OTG_FS RCC_AHBPeriph_USBFS #elif defined(CH32L10x) -#define RCC_AHBPeriph_OTG_FS RCC_HBPeriph_USBFS +#define RCC_AHBPeriph_USBFS RCC_HBPeriph_USBFS #define RCC_AHBPeriphClockCmd RCC_HBPeriphClockCmd #endif @@ -160,9 +146,7 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { return; // unsupported } -#if defined(CH32V30x) - RCC_OTGFSCLKConfig(usb_div); -#elif !defined(CH32X035) +#if !defined(CH32X035) RCC_USBCLKConfig(usb_div); #endif @@ -171,7 +155,7 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { #endif #if CFG_TUD_WCH_USBIP_USBFS - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE); + RCC_AHBPeriphClockCmd(RCC_AHBPeriph_USBFS, ENABLE); #endif #endif diff --git a/src/portable/wch/ch32_usbfs_reg.h b/src/portable/wch/ch32_usbfs_reg.h index 589634ed..c1a0f6f4 100644 --- a/src/portable/wch/ch32_usbfs_reg.h +++ b/src/portable/wch/ch32_usbfs_reg.h @@ -89,22 +89,17 @@ __IO uint32_t Reserve1; __IO uint32_t OTG_CR; __IO uint32_t OTG_SR; - } USBOTG_FS_TypeDef; + } USBFSD_TypeDef; - #define USBOTG_FS ((USBOTG_FS_TypeDef *) 0x40023400) + #define USBFSD ((USBFSD_TypeDef *) 0x40023400) #elif CFG_TUSB_MCU == OPT_MCU_CH32V20X #include #elif CFG_TUSB_MCU == OPT_MCU_CH32V307 #include - #define USBHD_IRQn OTG_FS_IRQn #elif CFG_TUSB_MCU == OPT_MCU_CH32X035 #include - #define USBOTG_FS USBFSD - #define USBHD_IRQn USBFS_IRQn #elif CFG_TUSB_MCU == OPT_MCU_CH32L10X #include - #define USBOTG_FS USBFSD - #define USBHD_IRQn USBFS_IRQn #endif #ifdef __GNUC__ diff --git a/src/portable/wch/dcd_ch32_usbfs.c b/src/portable/wch/dcd_ch32_usbfs.c index 4e8e25a0..0741282b 100644 --- a/src/portable/wch/dcd_ch32_usbfs.c +++ b/src/portable/wch/dcd_ch32_usbfs.c @@ -35,10 +35,10 @@ /* private defines */ #define EP_MAX (8) -#define EP_DMA(ep) ((&USBOTG_FS->UEP0_DMA)[ep]) -#define EP_TX_LEN(ep) ((&USBOTG_FS->UEP0_TX_LEN)[2 * ep]) -#define EP_TX_CTRL(ep) ((&USBOTG_FS->UEP0_TX_CTRL)[4 * ep]) -#define EP_RX_CTRL(ep) ((&USBOTG_FS->UEP0_RX_CTRL)[4 * ep]) +#define EP_DMA(ep) ((&USBFSD->UEP0_DMA)[ep]) +#define EP_TX_LEN(ep) ((&USBFSD->UEP0_TX_LEN)[2 * ep]) +#define EP_TX_CTRL(ep) ((&USBFSD->UEP0_TX_CTRL)[4 * ep]) +#define EP_RX_CTRL(ep) ((&USBFSD->UEP0_RX_CTRL)[4 * ep]) /* private data */ struct usb_xfer { @@ -126,12 +126,12 @@ static void update_out(uint8_t rhport, uint8_t ep, size_t rx_len) { bool dcd_init(uint8_t rhport, const tusb_rhport_init_t* rh_init) { (void) rh_init; // init registers - USBOTG_FS->BASE_CTRL = USBFS_CTRL_SYS_CTRL | USBFS_CTRL_INT_BUSY | USBFS_CTRL_DMA_EN; - USBOTG_FS->UDEV_CTRL = USBFS_UDEV_CTRL_PD_DIS | USBFS_UDEV_CTRL_PORT_EN; - USBOTG_FS->DEV_ADDR = 0x00; + USBFSD->BASE_CTRL = USBFS_CTRL_SYS_CTRL | USBFS_CTRL_INT_BUSY | USBFS_CTRL_DMA_EN; + USBFSD->UDEV_CTRL = USBFS_UDEV_CTRL_PD_DIS | USBFS_UDEV_CTRL_PORT_EN; + USBFSD->DEV_ADDR = 0x00; - USBOTG_FS->INT_FG = 0xFF; - USBOTG_FS->INT_EN = USBFS_INT_EN_BUS_RST | USBFS_INT_EN_TRANSFER | USBFS_INT_EN_SUSPEND; + USBFSD->INT_FG = 0xFF; + USBFSD->INT_EN = USBFS_INT_EN_BUS_RST | USBFS_INT_EN_TRANSFER | USBFS_INT_EN_SUSPEND; // setup endpoint 0 EP_DMA(0) = (uint32_t) &data.buffer[0][0]; @@ -140,10 +140,10 @@ bool dcd_init(uint8_t rhport, const tusb_rhport_init_t* rh_init) { EP_RX_CTRL(0) = USBFS_EP_R_RES_ACK; // enable other endpoints but NAK everything - USBOTG_FS->UEP4_1_MOD = 0xCC; - USBOTG_FS->UEP2_3_MOD = 0xCC; - USBOTG_FS->UEP5_6_MOD = 0xCC; - USBOTG_FS->UEP7_MOD = 0x0C; + USBFSD->UEP4_1_MOD = 0xCC; + USBFSD->UEP2_3_MOD = 0xCC; + USBFSD->UEP5_6_MOD = 0xCC; + USBFSD->UEP7_MOD = 0x0C; for (uint8_t ep = 1; ep < EP_MAX; ep++) { EP_DMA(ep) = (uint32_t) &data.buffer[ep][0]; @@ -160,14 +160,14 @@ bool dcd_init(uint8_t rhport, const tusb_rhport_init_t* rh_init) { void dcd_int_handler(uint8_t rhport) { (void) rhport; - uint8_t status = USBOTG_FS->INT_FG; + uint8_t status = USBFSD->INT_FG; if (status & USBFS_INT_FG_TRANSFER) { - uint8_t ep = USBFS_INT_ST_MASK_UIS_ENDP(USBOTG_FS->INT_ST); - uint8_t token = USBFS_INT_ST_MASK_UIS_TOKEN(USBOTG_FS->INT_ST); + uint8_t ep = USBFS_INT_ST_MASK_UIS_ENDP(USBFSD->INT_ST); + uint8_t token = USBFS_INT_ST_MASK_UIS_TOKEN(USBFSD->INT_ST); switch (token) { case PID_OUT: { - uint16_t rx_len = USBOTG_FS->RX_LEN; + uint16_t rx_len = USBFSD->RX_LEN; update_out(rhport, ep, rx_len); break; } @@ -186,7 +186,7 @@ void dcd_int_handler(uint8_t rhport) { break; } - USBOTG_FS->INT_FG = USBFS_INT_FG_TRANSFER; + USBFSD->INT_FG = USBFS_INT_FG_TRANSFER; } else if (status & USBFS_INT_FG_BUS_RST) { data.ep0_tog = true; data.xfer[0][TUSB_DIR_OUT].max_size = 64; @@ -194,25 +194,25 @@ void dcd_int_handler(uint8_t rhport) { dcd_event_bus_signal(rhport, DCD_EVENT_BUS_RESET, true); - USBOTG_FS->DEV_ADDR = 0x00; + USBFSD->DEV_ADDR = 0x00; EP_RX_CTRL(0) = USBFS_EP_R_RES_ACK; - USBOTG_FS->INT_FG = USBFS_INT_FG_BUS_RST; + USBFSD->INT_FG = USBFS_INT_FG_BUS_RST; } else if (status & USBFS_INT_FG_SUSPEND) { dcd_event_t event = {.rhport = rhport, .event_id = DCD_EVENT_SUSPEND}; dcd_event_handler(&event, true); - USBOTG_FS->INT_FG = USBFS_INT_FG_SUSPEND; + USBFSD->INT_FG = USBFS_INT_FG_SUSPEND; } } void dcd_int_enable(uint8_t rhport) { (void) rhport; - NVIC_EnableIRQ(USBHD_IRQn); + NVIC_EnableIRQ(USBFS_IRQn); } void dcd_int_disable(uint8_t rhport) { (void) rhport; - NVIC_DisableIRQ(USBHD_IRQn); + NVIC_DisableIRQ(USBFS_IRQn); } void dcd_set_address(uint8_t rhport, uint8_t dev_addr) { @@ -227,12 +227,12 @@ void dcd_remote_wakeup(uint8_t rhport) { void dcd_connect(uint8_t rhport) { (void) rhport; - USBOTG_FS->BASE_CTRL |= USBFS_CTRL_DEV_PUEN; + USBFSD->BASE_CTRL |= USBFS_CTRL_DEV_PUEN; } void dcd_disconnect(uint8_t rhport) { (void) rhport; - USBOTG_FS->BASE_CTRL &= ~USBFS_CTRL_DEV_PUEN; + USBFSD->BASE_CTRL &= ~USBFS_CTRL_DEV_PUEN; } void dcd_sof_enable(uint8_t rhport, bool en) { @@ -247,7 +247,7 @@ void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const* req if (request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_DEVICE && request->bmRequestType_bit.type == TUSB_REQ_TYPE_STANDARD && request->bRequest == TUSB_REQ_SET_ADDRESS) { - USBOTG_FS->DEV_ADDR = (uint8_t) request->wValue; + USBFSD->DEV_ADDR = (uint8_t) request->wValue; } EP_TX_CTRL(0) = USBFS_EP_T_RES_NAK; EP_RX_CTRL(0) = USBFS_EP_R_RES_ACK; From 12dbc7a5abeca1706b13aaed48efcd20f98df96f Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 12:45:35 +0900 Subject: [PATCH 17/28] function name fix --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index 239cf709..c63a060c 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -146,7 +146,9 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { return; // unsupported } -#if !defined(CH32X035) +#if defined(CH32V30x) + RCC_USBFSCLKConfig(usb_div); +#elif !defined(CH32X035) RCC_USBCLKConfig(usb_div); #endif From b4535cd301a35b5582136a8380aea3fe9f95ffd8 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 17:48:18 +0900 Subject: [PATCH 18/28] name fix --- src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index c63a060c..d325fda1 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -102,7 +102,7 @@ void TinyUSB_Port_InitDevice(uint8_t rhport) { // Full speed OTG or FSDev #if defined(CH32V10x) - EXTEN->EXTEN_CTR |= EXTEN_USBHD_IO_EN; + EXTEN->EXTEN_CTR |= EXTEN_USBFS_IO_EN; EXTEN->EXTEN_CTR &= ~EXTEN_USB_5V_SEL; #elif defined(CH32L10x) #define RCC_AHBPeriph_USBFS RCC_HBPeriph_USBFS From bb1b43067ad7801943f2411018991ce29279fedb Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 21:35:59 +0900 Subject: [PATCH 19/28] define ch32x035 endpoint --- src/portable/wch/ch32_usbfs_reg.h | 22 ++++++++++++++++++++++ src/portable/wch/dcd_ch32_usbfs.c | 17 +++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/portable/wch/ch32_usbfs_reg.h b/src/portable/wch/ch32_usbfs_reg.h index c1a0f6f4..ecd7a5eb 100644 --- a/src/portable/wch/ch32_usbfs_reg.h +++ b/src/portable/wch/ch32_usbfs_reg.h @@ -149,6 +149,27 @@ #define USBFS_UDEV_CTRL_DP_PIN (1 << 5) #define USBFS_UDEV_CTRL_PD_DIS (1 << 7) +#if defined(CH32X035) +// TX_CTRL +#define USBFS_EP_T_RES_MASK (3 << 0) +#define USBFS_EP_T_TOG (1 << 6) +#define USBFS_EP_T_AUTO_TOG (1 << 4) + +#define USBFS_EP_T_RES_ACK (0 << 0) +#define USBFS_EP_T_RES_NYET (1 << 0) +#define USBFS_EP_T_RES_NAK (2 << 0) +#define USBFS_EP_T_RES_STALL (3 << 0) + +// RX_CTRL +#define USBFS_EP_R_RES_MASK (3 << 2) +#define USBFS_EP_R_TOG (1 << 7) +#define USBFS_EP_R_AUTO_TOG (1 << 4) + +#define USBFS_EP_R_RES_ACK (0 << 0) +#define USBFS_EP_R_RES_NYET (1 << 0) +#define USBFS_EP_R_RES_NAK (2 << 0) +#define USBFS_EP_R_RES_STALL (3 << 0) +#else // TX_CTRL #define USBFS_EP_T_RES_MASK (3 << 0) #define USBFS_EP_T_TOG (1 << 2) @@ -168,6 +189,7 @@ #define USBFS_EP_R_RES_NYET (1 << 0) #define USBFS_EP_R_RES_NAK (2 << 0) #define USBFS_EP_R_RES_STALL (3 << 0) +#endif // token PID #define PID_OUT 0 diff --git a/src/portable/wch/dcd_ch32_usbfs.c b/src/portable/wch/dcd_ch32_usbfs.c index 0741282b..3cb25664 100644 --- a/src/portable/wch/dcd_ch32_usbfs.c +++ b/src/portable/wch/dcd_ch32_usbfs.c @@ -35,10 +35,17 @@ /* private defines */ #define EP_MAX (8) +#if defined(CH32X035) +#define EP_DMA(ep) ((&USBFSD->UEP0_DMA)[ep + (ep > 4 ? 12 : 0)]) +#define EP_TX_LEN(ep) ((&USBFSD->UEP0_TX_LEN)[2 * ep + (ep > 4 ? 24 : 0)]) +#define EP_TX_CTRL(ep) ((&USBFSD->UEP0_CTRL_H)[2 * ep + (ep > 4 ? 24 : 0)]) +#define EP_RX_CTRL(ep) ((&USBFSD->UEP0_CTRL_H)[2 * ep + (ep > 4 ? 24 : 0)]) +#else #define EP_DMA(ep) ((&USBFSD->UEP0_DMA)[ep]) #define EP_TX_LEN(ep) ((&USBFSD->UEP0_TX_LEN)[2 * ep]) #define EP_TX_CTRL(ep) ((&USBFSD->UEP0_TX_CTRL)[4 * ep]) #define EP_RX_CTRL(ep) ((&USBFSD->UEP0_RX_CTRL)[4 * ep]) +#endif /* private data */ struct usb_xfer { @@ -142,11 +149,21 @@ bool dcd_init(uint8_t rhport, const tusb_rhport_init_t* rh_init) { // enable other endpoints but NAK everything USBFSD->UEP4_1_MOD = 0xCC; USBFSD->UEP2_3_MOD = 0xCC; +#if defined(CH32X035) + USBFSD->UEP567_MOD = 0x3C; +#else USBFSD->UEP5_6_MOD = 0xCC; USBFSD->UEP7_MOD = 0x0C; +#endif for (uint8_t ep = 1; ep < EP_MAX; ep++) { +#if defined(CH32X035) + if (ep != 4) { + EP_DMA(ep) = (uint32_t) &data.buffer[ep][0]; + } +#else EP_DMA(ep) = (uint32_t) &data.buffer[ep][0]; +#endif EP_TX_LEN(ep) = 0; EP_TX_CTRL(ep) = USBFS_EP_T_AUTO_TOG | USBFS_EP_T_RES_NAK; EP_RX_CTRL(ep) = USBFS_EP_R_AUTO_TOG | USBFS_EP_R_RES_NAK; From 23c00ee91089341fc146c1f7d58ef61d19a32353 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 22:30:34 +0900 Subject: [PATCH 20/28] add boards to tusb_config.h --- src/tusb_config.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tusb_config.h b/src/tusb_config.h index c2e0702b..5872cc22 100644 --- a/src/tusb_config.h +++ b/src/tusb_config.h @@ -50,8 +50,7 @@ #endif // Note: For platformio prioritize this file over the one in BSP in all cases - -#elif defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) +#elif defined(ARDUINO_ARCH_CH32) || defined(CH32V20x) || defined(CH32V30x) || defined(CH32X035) || defined(CH32L10x) #include "arduino/ports/ch32/tusb_config_ch32.h" #else #error TinyUSB Arduino Library does not support your core yet From 8bc54a03c4d1e1b0823ebb565a8021cf36f461f4 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 22:37:40 +0900 Subject: [PATCH 21/28] no change From 47ec1960b45b41655932a5518be781ff68d26275 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 22:42:55 +0900 Subject: [PATCH 22/28] Update githubci.yml --- .github/workflows/githubci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/githubci.yml b/.github/workflows/githubci.yml index 019f5652..35bcafd9 100644 --- a/.github/workflows/githubci.yml +++ b/.github/workflows/githubci.yml @@ -59,8 +59,10 @@ jobs: # SAMD - 'metro_m0_tinyusb' - 'metro_m4_tinyusb' - # Ch32v2 + # CH32 - 'CH32V20x_EVT' + - 'CH32X035_EVT' + - 'CH32L10x_EVT' steps: - name: Checkout code uses: actions/checkout@v4 From 654a7c673cde3252e1ebeb6aa888da8e9e84c387 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 22:47:55 +0900 Subject: [PATCH 23/28] fix build_all.py --- tools/build_all.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/build_all.py b/tools/build_all.py index 1d19ea92..228832b6 100644 --- a/tools/build_all.py +++ b/tools/build_all.py @@ -24,7 +24,9 @@ ['metroesp32s2', 'espressif:esp32:adafruit_metro_esp32s2:CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=cdc,PSRAM=enabled,PartitionScheme=tinyuf2'], # [' ', 'espressif:esp32:adafruit_feather_esp32s3:FlashMode=qio,LoopCore=1,EventsCore=1,USBMode=default,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=cdc,PartitionScheme=tinyuf2'], - ['CH32V20x_EVT', 'WCH:ch32v:CH32V20x_EVT'] + ['CH32V20x_EVT', 'WCH:ch32v:CH32V20x_EVT'], + ['CH32X035_EVT', 'WCH:ch32v:CH32X035_EVT'], + ['CH32L10x_EVT', 'WCH:ch32v:CH32L10x_EVT'] ] From d4bce0c9ee4d1c3d1fc2dd505cbdda1d7414644b Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 22:52:28 +0900 Subject: [PATCH 24/28] add .skip --- .github/workflows/githubci.yml | 1 + examples/DualRole/CDC/serial_host_bridge/.skip.txt | 2 ++ examples/DualRole/HID/hid_device_report/.skip.txt | 3 +++ examples/DualRole/HID/hid_mouse_log_filter/.skip.txt | 3 +++ examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt | 3 +++ examples/DualRole/HID/hid_remapper/.skip.txt | 3 +++ examples/DualRole/MassStorage/msc_data_logger/.skip.txt | 3 +++ examples/DualRole/MassStorage/msc_file_explorer/.skip.txt | 3 +++ examples/DualRole/Simple/device_info/.skip.txt | 3 +++ examples/DualRole/Simple/device_info_max3421e/.skip.txt | 3 +++ examples/HID/hid_composite_joy_featherwing/.skip.txt | 3 +++ examples/MassStorage/msc_external_flash/.skip.txt | 3 +++ examples/MassStorage/msc_external_flash_sdcard/.skip.txt | 3 +++ examples/MassStorage/msc_ramdisk_dual/.skip.txt | 3 +++ examples/MassStorage/msc_sd/.skip.txt | 4 ++++ examples/Vendor/i2c_tiny_usb_adapter/.skip.txt | 3 +++ examples/Video/video_capture/.skip.txt | 3 +++ examples/WebUSB/webusb_rgb/.skip.txt | 5 ++++- examples/WebUSB/webusb_serial/.skip.txt | 5 ++++- tools/build_all.py | 1 + 20 files changed, 58 insertions(+), 2 deletions(-) diff --git a/.github/workflows/githubci.yml b/.github/workflows/githubci.yml index 35bcafd9..1986f80f 100644 --- a/.github/workflows/githubci.yml +++ b/.github/workflows/githubci.yml @@ -61,6 +61,7 @@ jobs: - 'metro_m4_tinyusb' # CH32 - 'CH32V20x_EVT' + - 'CH32V30x_EVT' - 'CH32X035_EVT' - 'CH32L10x_EVT' steps: diff --git a/examples/DualRole/CDC/serial_host_bridge/.skip.txt b/examples/DualRole/CDC/serial_host_bridge/.skip.txt index f8e761cb..c5492df6 100644 --- a/examples/DualRole/CDC/serial_host_bridge/.skip.txt +++ b/examples/DualRole/CDC/serial_host_bridge/.skip.txt @@ -1,2 +1,4 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/DualRole/HID/hid_device_report/.skip.txt b/examples/DualRole/HID/hid_device_report/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/DualRole/HID/hid_device_report/.skip.txt +++ b/examples/DualRole/HID/hid_device_report/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/DualRole/HID/hid_mouse_log_filter/.skip.txt b/examples/DualRole/HID/hid_mouse_log_filter/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/DualRole/HID/hid_mouse_log_filter/.skip.txt +++ b/examples/DualRole/HID/hid_mouse_log_filter/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt b/examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt +++ b/examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/DualRole/HID/hid_remapper/.skip.txt b/examples/DualRole/HID/hid_remapper/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/DualRole/HID/hid_remapper/.skip.txt +++ b/examples/DualRole/HID/hid_remapper/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/DualRole/MassStorage/msc_data_logger/.skip.txt b/examples/DualRole/MassStorage/msc_data_logger/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/DualRole/MassStorage/msc_data_logger/.skip.txt +++ b/examples/DualRole/MassStorage/msc_data_logger/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/DualRole/MassStorage/msc_file_explorer/.skip.txt b/examples/DualRole/MassStorage/msc_file_explorer/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/DualRole/MassStorage/msc_file_explorer/.skip.txt +++ b/examples/DualRole/MassStorage/msc_file_explorer/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/DualRole/Simple/device_info/.skip.txt b/examples/DualRole/Simple/device_info/.skip.txt index 98d71f56..63a4553d 100644 --- a/examples/DualRole/Simple/device_info/.skip.txt +++ b/examples/DualRole/Simple/device_info/.skip.txt @@ -1 +1,4 @@ CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/DualRole/Simple/device_info_max3421e/.skip.txt b/examples/DualRole/Simple/device_info_max3421e/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/DualRole/Simple/device_info_max3421e/.skip.txt +++ b/examples/DualRole/Simple/device_info_max3421e/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/HID/hid_composite_joy_featherwing/.skip.txt b/examples/HID/hid_composite_joy_featherwing/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/HID/hid_composite_joy_featherwing/.skip.txt +++ b/examples/HID/hid_composite_joy_featherwing/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/MassStorage/msc_external_flash/.skip.txt b/examples/MassStorage/msc_external_flash/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/MassStorage/msc_external_flash/.skip.txt +++ b/examples/MassStorage/msc_external_flash/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/MassStorage/msc_external_flash_sdcard/.skip.txt b/examples/MassStorage/msc_external_flash_sdcard/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/MassStorage/msc_external_flash_sdcard/.skip.txt +++ b/examples/MassStorage/msc_external_flash_sdcard/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/MassStorage/msc_ramdisk_dual/.skip.txt b/examples/MassStorage/msc_ramdisk_dual/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/MassStorage/msc_ramdisk_dual/.skip.txt +++ b/examples/MassStorage/msc_ramdisk_dual/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/MassStorage/msc_sd/.skip.txt b/examples/MassStorage/msc_sd/.skip.txt index b5c66f7f..f7baf53f 100644 --- a/examples/MassStorage/msc_sd/.skip.txt +++ b/examples/MassStorage/msc_sd/.skip.txt @@ -6,3 +6,7 @@ metroesp32s2 feather_rp2040_tinyusb pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT + diff --git a/examples/Vendor/i2c_tiny_usb_adapter/.skip.txt b/examples/Vendor/i2c_tiny_usb_adapter/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/Vendor/i2c_tiny_usb_adapter/.skip.txt +++ b/examples/Vendor/i2c_tiny_usb_adapter/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/Video/video_capture/.skip.txt b/examples/Video/video_capture/.skip.txt index f8e761cb..9c07cb65 100644 --- a/examples/Video/video_capture/.skip.txt +++ b/examples/Video/video_capture/.skip.txt @@ -1,2 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT diff --git a/examples/WebUSB/webusb_rgb/.skip.txt b/examples/WebUSB/webusb_rgb/.skip.txt index 32e60fa6..e4e6a633 100644 --- a/examples/WebUSB/webusb_rgb/.skip.txt +++ b/examples/WebUSB/webusb_rgb/.skip.txt @@ -1,3 +1,6 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -# CH32V20x_EVT is not supported due to Adafruit_Neopixel \ No newline at end of file +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT +# CH32xxxx_EVT is not supported due to Adafruit_Neopixel \ No newline at end of file diff --git a/examples/WebUSB/webusb_serial/.skip.txt b/examples/WebUSB/webusb_serial/.skip.txt index 2842ebbb..0596a682 100644 --- a/examples/WebUSB/webusb_serial/.skip.txt +++ b/examples/WebUSB/webusb_serial/.skip.txt @@ -1,3 +1,6 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -# CH32V20x_EVT is not supported due to lacking of HardwareSerial::read(uint8_t [64], int) \ No newline at end of file +CH32V30x_EVT +CH32X035_EVT +CH32L10x_EVT +# CH32xxxx_EVT is not supported due to lacking of HardwareSerial::read(uint8_t [64], int) \ No newline at end of file diff --git a/tools/build_all.py b/tools/build_all.py index 228832b6..e8183518 100644 --- a/tools/build_all.py +++ b/tools/build_all.py @@ -25,6 +25,7 @@ 'espressif:esp32:adafruit_metro_esp32s2:CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=cdc,PSRAM=enabled,PartitionScheme=tinyuf2'], # [' ', 'espressif:esp32:adafruit_feather_esp32s3:FlashMode=qio,LoopCore=1,EventsCore=1,USBMode=default,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=cdc,PartitionScheme=tinyuf2'], ['CH32V20x_EVT', 'WCH:ch32v:CH32V20x_EVT'], + ['CH32V30x_EVT', 'WCH:ch32v:CH32V30x_EVT'], ['CH32X035_EVT', 'WCH:ch32v:CH32X035_EVT'], ['CH32L10x_EVT', 'WCH:ch32v:CH32L10x_EVT'] ] From 51100cc11d83044bf458ca99fd86ef7e1b7e3738 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 22:54:49 +0900 Subject: [PATCH 25/28] fix --- examples/DualRole/CDC/serial_host_bridge/.skip.txt | 1 + src/arduino/ports/ch32/tusb_config_ch32.h | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/DualRole/CDC/serial_host_bridge/.skip.txt b/examples/DualRole/CDC/serial_host_bridge/.skip.txt index c5492df6..9c07cb65 100644 --- a/examples/DualRole/CDC/serial_host_bridge/.skip.txt +++ b/examples/DualRole/CDC/serial_host_bridge/.skip.txt @@ -1,4 +1,5 @@ pico_rp2040_tinyusb_host CH32V20x_EVT +CH32V30x_EVT CH32X035_EVT CH32L10x_EVT diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index d56d0367..b74bc451 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -43,7 +43,6 @@ extern "C" { #define CFG_TUSB_MCU OPT_MCU_CH32X035 #elif defined(CH32L10x) #define CFG_TUSB_MCU OPT_MCU_CH32L10X -#warning "CH32L103 is not working yet" #endif #define CFG_TUSB_OS OPT_OS_NONE From 65ce28061c8c22131d757e81a177f6bc6e9da3fa Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 22:59:28 +0900 Subject: [PATCH 26/28] delete --- .github/workflows/githubci.yml | 3 --- examples/DualRole/CDC/serial_host_bridge/.skip.txt | 3 --- examples/DualRole/HID/hid_device_report/.skip.txt | 3 --- examples/DualRole/HID/hid_mouse_log_filter/.skip.txt | 3 --- examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt | 3 --- examples/DualRole/HID/hid_remapper/.skip.txt | 3 --- examples/DualRole/MassStorage/msc_data_logger/.skip.txt | 3 --- examples/DualRole/MassStorage/msc_file_explorer/.skip.txt | 3 --- examples/DualRole/Simple/device_info/.skip.txt | 3 --- examples/DualRole/Simple/device_info_max3421e/.skip.txt | 3 --- examples/HID/hid_composite_joy_featherwing/.skip.txt | 3 --- examples/MassStorage/msc_external_flash/.skip.txt | 3 --- examples/MassStorage/msc_external_flash_sdcard/.skip.txt | 3 --- examples/MassStorage/msc_ramdisk_dual/.skip.txt | 3 --- examples/MassStorage/msc_sd/.skip.txt | 3 --- examples/Vendor/i2c_tiny_usb_adapter/.skip.txt | 3 --- examples/Video/video_capture/.skip.txt | 3 --- examples/WebUSB/webusb_rgb/.skip.txt | 5 +---- examples/WebUSB/webusb_serial/.skip.txt | 5 +---- tools/build_all.py | 5 +---- 20 files changed, 3 insertions(+), 63 deletions(-) diff --git a/.github/workflows/githubci.yml b/.github/workflows/githubci.yml index 1986f80f..246d4981 100644 --- a/.github/workflows/githubci.yml +++ b/.github/workflows/githubci.yml @@ -61,9 +61,6 @@ jobs: - 'metro_m4_tinyusb' # CH32 - 'CH32V20x_EVT' - - 'CH32V30x_EVT' - - 'CH32X035_EVT' - - 'CH32L10x_EVT' steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/examples/DualRole/CDC/serial_host_bridge/.skip.txt b/examples/DualRole/CDC/serial_host_bridge/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/DualRole/CDC/serial_host_bridge/.skip.txt +++ b/examples/DualRole/CDC/serial_host_bridge/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/DualRole/HID/hid_device_report/.skip.txt b/examples/DualRole/HID/hid_device_report/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/DualRole/HID/hid_device_report/.skip.txt +++ b/examples/DualRole/HID/hid_device_report/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/DualRole/HID/hid_mouse_log_filter/.skip.txt b/examples/DualRole/HID/hid_mouse_log_filter/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/DualRole/HID/hid_mouse_log_filter/.skip.txt +++ b/examples/DualRole/HID/hid_mouse_log_filter/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt b/examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt +++ b/examples/DualRole/HID/hid_mouse_tremor_filter/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/DualRole/HID/hid_remapper/.skip.txt b/examples/DualRole/HID/hid_remapper/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/DualRole/HID/hid_remapper/.skip.txt +++ b/examples/DualRole/HID/hid_remapper/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/DualRole/MassStorage/msc_data_logger/.skip.txt b/examples/DualRole/MassStorage/msc_data_logger/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/DualRole/MassStorage/msc_data_logger/.skip.txt +++ b/examples/DualRole/MassStorage/msc_data_logger/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/DualRole/MassStorage/msc_file_explorer/.skip.txt b/examples/DualRole/MassStorage/msc_file_explorer/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/DualRole/MassStorage/msc_file_explorer/.skip.txt +++ b/examples/DualRole/MassStorage/msc_file_explorer/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/DualRole/Simple/device_info/.skip.txt b/examples/DualRole/Simple/device_info/.skip.txt index 63a4553d..98d71f56 100644 --- a/examples/DualRole/Simple/device_info/.skip.txt +++ b/examples/DualRole/Simple/device_info/.skip.txt @@ -1,4 +1 @@ CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/DualRole/Simple/device_info_max3421e/.skip.txt b/examples/DualRole/Simple/device_info_max3421e/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/DualRole/Simple/device_info_max3421e/.skip.txt +++ b/examples/DualRole/Simple/device_info_max3421e/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/HID/hid_composite_joy_featherwing/.skip.txt b/examples/HID/hid_composite_joy_featherwing/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/HID/hid_composite_joy_featherwing/.skip.txt +++ b/examples/HID/hid_composite_joy_featherwing/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/MassStorage/msc_external_flash/.skip.txt b/examples/MassStorage/msc_external_flash/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/MassStorage/msc_external_flash/.skip.txt +++ b/examples/MassStorage/msc_external_flash/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/MassStorage/msc_external_flash_sdcard/.skip.txt b/examples/MassStorage/msc_external_flash_sdcard/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/MassStorage/msc_external_flash_sdcard/.skip.txt +++ b/examples/MassStorage/msc_external_flash_sdcard/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/MassStorage/msc_ramdisk_dual/.skip.txt b/examples/MassStorage/msc_ramdisk_dual/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/MassStorage/msc_ramdisk_dual/.skip.txt +++ b/examples/MassStorage/msc_ramdisk_dual/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/MassStorage/msc_sd/.skip.txt b/examples/MassStorage/msc_sd/.skip.txt index f7baf53f..2da8dfb6 100644 --- a/examples/MassStorage/msc_sd/.skip.txt +++ b/examples/MassStorage/msc_sd/.skip.txt @@ -6,7 +6,4 @@ metroesp32s2 feather_rp2040_tinyusb pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/Vendor/i2c_tiny_usb_adapter/.skip.txt b/examples/Vendor/i2c_tiny_usb_adapter/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/Vendor/i2c_tiny_usb_adapter/.skip.txt +++ b/examples/Vendor/i2c_tiny_usb_adapter/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/Video/video_capture/.skip.txt b/examples/Video/video_capture/.skip.txt index 9c07cb65..f8e761cb 100644 --- a/examples/Video/video_capture/.skip.txt +++ b/examples/Video/video_capture/.skip.txt @@ -1,5 +1,2 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT diff --git a/examples/WebUSB/webusb_rgb/.skip.txt b/examples/WebUSB/webusb_rgb/.skip.txt index e4e6a633..32e60fa6 100644 --- a/examples/WebUSB/webusb_rgb/.skip.txt +++ b/examples/WebUSB/webusb_rgb/.skip.txt @@ -1,6 +1,3 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT -# CH32xxxx_EVT is not supported due to Adafruit_Neopixel \ No newline at end of file +# CH32V20x_EVT is not supported due to Adafruit_Neopixel \ No newline at end of file diff --git a/examples/WebUSB/webusb_serial/.skip.txt b/examples/WebUSB/webusb_serial/.skip.txt index 0596a682..2842ebbb 100644 --- a/examples/WebUSB/webusb_serial/.skip.txt +++ b/examples/WebUSB/webusb_serial/.skip.txt @@ -1,6 +1,3 @@ pico_rp2040_tinyusb_host CH32V20x_EVT -CH32V30x_EVT -CH32X035_EVT -CH32L10x_EVT -# CH32xxxx_EVT is not supported due to lacking of HardwareSerial::read(uint8_t [64], int) \ No newline at end of file +# CH32V20x_EVT is not supported due to lacking of HardwareSerial::read(uint8_t [64], int) \ No newline at end of file diff --git a/tools/build_all.py b/tools/build_all.py index e8183518..1d19ea92 100644 --- a/tools/build_all.py +++ b/tools/build_all.py @@ -24,10 +24,7 @@ ['metroesp32s2', 'espressif:esp32:adafruit_metro_esp32s2:CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=cdc,PSRAM=enabled,PartitionScheme=tinyuf2'], # [' ', 'espressif:esp32:adafruit_feather_esp32s3:FlashMode=qio,LoopCore=1,EventsCore=1,USBMode=default,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=cdc,PartitionScheme=tinyuf2'], - ['CH32V20x_EVT', 'WCH:ch32v:CH32V20x_EVT'], - ['CH32V30x_EVT', 'WCH:ch32v:CH32V30x_EVT'], - ['CH32X035_EVT', 'WCH:ch32v:CH32X035_EVT'], - ['CH32L10x_EVT', 'WCH:ch32v:CH32L10x_EVT'] + ['CH32V20x_EVT', 'WCH:ch32v:CH32V20x_EVT'] ] From e1c7a9dd8dd7ca8e27746173f2a99786c13b5357 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 23:10:31 +0900 Subject: [PATCH 27/28] fix --- .github/workflows/githubci.yml | 2 +- examples/MassStorage/msc_sd/.skip.txt | 1 - src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp | 3 ++- src/arduino/ports/ch32/tusb_config_ch32.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/githubci.yml b/.github/workflows/githubci.yml index 246d4981..019f5652 100644 --- a/.github/workflows/githubci.yml +++ b/.github/workflows/githubci.yml @@ -59,7 +59,7 @@ jobs: # SAMD - 'metro_m0_tinyusb' - 'metro_m4_tinyusb' - # CH32 + # Ch32v2 - 'CH32V20x_EVT' steps: - name: Checkout code diff --git a/examples/MassStorage/msc_sd/.skip.txt b/examples/MassStorage/msc_sd/.skip.txt index 2da8dfb6..b5c66f7f 100644 --- a/examples/MassStorage/msc_sd/.skip.txt +++ b/examples/MassStorage/msc_sd/.skip.txt @@ -6,4 +6,3 @@ metroesp32s2 feather_rp2040_tinyusb pico_rp2040_tinyusb_host CH32V20x_EVT - diff --git a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp index d325fda1..2de3e1f1 100644 --- a/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp +++ b/src/arduino/ports/ch32/Adafruit_TinyUSB_ch32.cpp @@ -61,7 +61,8 @@ USBWakeUp_IRQHandler(void) { // USBFS #if CFG_TUD_WCH_USBIP_USBFS -#if defined(CH32V10x) || defined(CH32V20x) || defined(CH32L10x) +#if defined(CH32V10x) || defined(CH32V20x) || defined(CH32X035) || \ + defined(CH32L10x) #if defined(CH32V10x) #define USBFSWakeUp_IRQHandler USBWakeUp_IRQHandler diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index b74bc451..fda77749 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -34,7 +34,7 @@ extern "C" { //-------------------------------------------------------------------- #if defined(CH32V10x) #define CFG_TUSB_MCU OPT_MCU_CH32V103 -#warning "CH32V103 is not working yet" +#warning "CH32v103 is not working yet" #elif defined(CH32V20x) #define CFG_TUSB_MCU OPT_MCU_CH32V20X #elif defined(CH32V30x) From e39e57e00d38c1856184dd55665ade71a041efe9 Mon Sep 17 00:00:00 2001 From: Koki Mizumoto <21km43@gmail.com> Date: Sat, 11 Jan 2025 23:15:35 +0900 Subject: [PATCH 28/28] warning --- src/arduino/ports/ch32/tusb_config_ch32.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/arduino/ports/ch32/tusb_config_ch32.h b/src/arduino/ports/ch32/tusb_config_ch32.h index fda77749..6faa55a5 100644 --- a/src/arduino/ports/ch32/tusb_config_ch32.h +++ b/src/arduino/ports/ch32/tusb_config_ch32.h @@ -34,15 +34,17 @@ extern "C" { //-------------------------------------------------------------------- #if defined(CH32V10x) #define CFG_TUSB_MCU OPT_MCU_CH32V103 -#warning "CH32v103 is not working yet" +#warning "CH32V103 is not working yet" #elif defined(CH32V20x) #define CFG_TUSB_MCU OPT_MCU_CH32V20X #elif defined(CH32V30x) #define CFG_TUSB_MCU OPT_MCU_CH32V307 #elif defined(CH32X035) #define CFG_TUSB_MCU OPT_MCU_CH32X035 +#warning "CH32X035 is not working yet" #elif defined(CH32L10x) #define CFG_TUSB_MCU OPT_MCU_CH32L10X +#warning "CH32L103 is not working yet" #endif #define CFG_TUSB_OS OPT_OS_NONE