summaryrefslogtreecommitdiff
path: root/bsp/at32/at32f413-start
diff options
context:
space:
mode:
authorMan, Jianting (Meco) <[email protected]>2023-02-25 13:52:37 -0500
committerGitHub <[email protected]>2023-02-25 13:52:37 -0500
commit1acef4277b02e5084310ecd7028656ae535178f5 (patch)
tree03b6b6f0b3df75a1cef301e1e7b2b3d234213390 /bsp/at32/at32f413-start
parent759192f5f5af23ae360818483d35974ef5b91c78 (diff)
parente63e33a3c64327aef3556fa811df0a8ec1e0e7ee (diff)
Merge pull request #6981 from RT-Thread/masterserialX-dev
sync from master
Diffstat (limited to 'bsp/at32/at32f413-start')
-rw-r--r--bsp/at32/at32f413-start/README.md3
-rw-r--r--bsp/at32/at32f413-start/SConscript6
-rw-r--r--bsp/at32/at32f413-start/SConstruct3
-rw-r--r--bsp/at32/at32f413-start/board/Kconfig5
-rw-r--r--bsp/at32/at32f413-start/board/inc/at32_msp.h1
-rw-r--r--bsp/at32/at32f413-start/board/src/at32_msp.c66
6 files changed, 81 insertions, 3 deletions
diff --git a/bsp/at32/at32f413-start/README.md b/bsp/at32/at32f413-start/README.md
index b3f9948a1f..d8bfd68310 100644
--- a/bsp/at32/at32f413-start/README.md
+++ b/bsp/at32/at32f413-start/README.md
@@ -50,6 +50,7 @@ AT32F413-START板级包支持MDK4﹑MDK5﹑IAR开发环境和GCC编译器,以�
| WDT | 支持 | |
| RTC | 支持 | |
| FLASH | 支持 | |
+| USB | 支持 | |
### IO在板级支持包中的映射情况
@@ -94,6 +95,8 @@ AT32F413-START板级包支持MDK4﹑MDK5﹑IAR开发环境和GCC编译器,以�
| PB9 | CAN1_TX |
| PB5 | CAN2_RX |
| PB6 | CAN2_TX |
+| PA11 | USB_DM |
+| PA12 | USB_DP |
## 使用说明
diff --git a/bsp/at32/at32f413-start/SConscript b/bsp/at32/at32f413-start/SConscript
index fe0ae941ae..d7ad2b45f8 100644
--- a/bsp/at32/at32f413-start/SConscript
+++ b/bsp/at32/at32f413-start/SConscript
@@ -1,11 +1,11 @@
# for module compiling
+from building import *
import os
-Import('RTT_ROOT')
-cwd = str(Dir('#'))
+cwd = GetCurrentDir()
objs = []
-list = os.listdir(cwd)
+list = os.listdir(cwd)
for d in list:
path = os.path.join(cwd, d)
if os.path.isfile(os.path.join(path, 'SConscript')):
diff --git a/bsp/at32/at32f413-start/SConstruct b/bsp/at32/at32f413-start/SConstruct
index 188f212186..d52169c980 100644
--- a/bsp/at32/at32f413-start/SConstruct
+++ b/bsp/at32/at32f413-start/SConstruct
@@ -52,6 +52,9 @@ rtconfig.BSP_LIBRARY_TYPE = at32_library
# include libraries
objs.extend(SConscript(os.path.join(libraries_path_prefix, at32_library, 'SConscript')))
+# include usb libraries
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'usbd_library', 'SConscript')))
+
# include drivers
objs.extend(SConscript(os.path.join(libraries_path_prefix, 'rt_drivers', 'SConscript')))
diff --git a/bsp/at32/at32f413-start/board/Kconfig b/bsp/at32/at32f413-start/board/Kconfig
index ef44a2848f..f991f7c915 100644
--- a/bsp/at32/at32f413-start/board/Kconfig
+++ b/bsp/at32/at32f413-start/board/Kconfig
@@ -26,6 +26,11 @@ menu "On-chip Peripheral Drivers"
config BSP_USING_ON_CHIP_FLASH
bool "Enable on-chip FLASH"
+ default n
+
+ config BSP_USING_USBD
+ bool "Enable USB BUS"
+ select RT_USING_USB_DEVICE
default n
menuconfig BSP_USING_RTC
diff --git a/bsp/at32/at32f413-start/board/inc/at32_msp.h b/bsp/at32/at32f413-start/board/inc/at32_msp.h
index ba267a172c..8efd4dbe32 100644
--- a/bsp/at32/at32f413-start/board/inc/at32_msp.h
+++ b/bsp/at32/at32f413-start/board/inc/at32_msp.h
@@ -19,5 +19,6 @@ void at32_msp_sdio_init(void *instance);
void at32_msp_adc_init(void *instance);
void at32_msp_hwtmr_init(void *instance);
void at32_msp_can_init(void *instance);
+void at32_msp_usb_init(void *instance);
#endif /* __AT32_MSP_H__ */
diff --git a/bsp/at32/at32f413-start/board/src/at32_msp.c b/bsp/at32/at32f413-start/board/src/at32_msp.c
index 81da4c8be4..a2e137a632 100644
--- a/bsp/at32/at32f413-start/board/src/at32_msp.c
+++ b/bsp/at32/at32f413-start/board/src/at32_msp.c
@@ -317,3 +317,69 @@ void at32_msp_can_init(void *instance)
#endif
}
#endif /* BSP_USING_CAN */
+
+#ifdef BSP_USING_USBD
+void at32_msp_usb_init(void *instance)
+{
+ usb_clk48_s clk_s;
+
+ /* default usb clock source from hick */
+ clk_s = USB_CLK_HICK;
+
+ /* enable usb clock */
+ crm_periph_clock_enable(CRM_USB_PERIPH_CLOCK, TRUE);
+
+ if(clk_s == USB_CLK_HICK)
+ {
+ crm_usb_clock_source_select(CRM_USB_CLOCK_SOURCE_HICK);
+
+ /* enable the acc calibration ready interrupt */
+ crm_periph_clock_enable(CRM_ACC_PERIPH_CLOCK, TRUE);
+
+ /* update the c1\c2\c3 value */
+ acc_write_c1(7980);
+ acc_write_c2(8000);
+ acc_write_c3(8020);
+
+ /* open acc calibration */
+ acc_calibration_mode_enable(ACC_CAL_HICKTRIM, TRUE);
+ }
+ else
+ {
+ switch(system_core_clock)
+ {
+ /* 48MHz */
+ case 48000000:
+ crm_usb_clock_div_set(CRM_USB_DIV_1);
+ break;
+ /* 72MHz */
+ case 72000000:
+ crm_usb_clock_div_set(CRM_USB_DIV_1_5);
+ break;
+ /* 96MHz */
+ case 96000000:
+ crm_usb_clock_div_set(CRM_USB_DIV_2);
+ break;
+ /* 120MHz */
+ case 120000000:
+ crm_usb_clock_div_set(CRM_USB_DIV_2_5);
+ break;
+ /* 144MHz */
+ case 144000000:
+ crm_usb_clock_div_set(CRM_USB_DIV_3);
+ break;
+ /* 168MHz */
+ case 168000000:
+ crm_usb_clock_div_set(CRM_USB_DIV_3_5);
+ break;
+ /* 192MHz */
+ case 192000000:
+ crm_usb_clock_div_set(CRM_USB_DIV_4);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+#endif /* BSP_USING_USBD */