diff options
Diffstat (limited to 'bsp/at32/at32f407-start')
| -rw-r--r-- | bsp/at32/at32f407-start/README.md | 3 | ||||
| -rw-r--r-- | bsp/at32/at32f407-start/SConstruct | 3 | ||||
| -rw-r--r-- | bsp/at32/at32f407-start/board/Kconfig | 5 | ||||
| -rw-r--r-- | bsp/at32/at32f407-start/board/inc/at32_msp.h | 1 | ||||
| -rw-r--r-- | bsp/at32/at32f407-start/board/src/at32_msp.c | 67 |
5 files changed, 79 insertions, 0 deletions
diff --git a/bsp/at32/at32f407-start/README.md b/bsp/at32/at32f407-start/README.md index 30aab90451..a7fa92dd2d 100644 --- a/bsp/at32/at32f407-start/README.md +++ b/bsp/at32/at32f407-start/README.md @@ -51,6 +51,7 @@ AT32F407-START板级包支持MDK4﹑MDK5﹑IAR开发环境和GCC编译器,以� | RTC | 支持 | | | FLASH | 支持 | | | EMAC | 支持 | | +| USB | 支持 | | ### IO在板级支持包中的映射情况 @@ -102,6 +103,8 @@ AT32F407-START板级包支持MDK4﹑MDK5﹑IAR开发环境和GCC编译器,以� | PD9 | EMAC_RMII_RXD0 | | PD10 | EMAC_RMII_RXD1 | | PA1 | EMAC_RMII_REF_CLK | +| PA11 | USB_DM | +| PA12 | USB_DP | ## 使用说明 diff --git a/bsp/at32/at32f407-start/SConstruct b/bsp/at32/at32f407-start/SConstruct index 6128df4d2d..7f4e5a1460 100644 --- a/bsp/at32/at32f407-start/SConstruct +++ b/bsp/at32/at32f407-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/at32f407-start/board/Kconfig b/bsp/at32/at32f407-start/board/Kconfig index f3b44c094c..9c0cd20df0 100644 --- a/bsp/at32/at32f407-start/board/Kconfig +++ b/bsp/at32/at32f407-start/board/Kconfig @@ -45,6 +45,11 @@ menu "On-chip Peripheral Drivers" endchoice endif + config BSP_USING_USBD + bool "Enable USB BUS" + select RT_USING_USB_DEVICE + default n + menuconfig BSP_USING_RTC bool "Enable RTC" select RT_USING_RTC diff --git a/bsp/at32/at32f407-start/board/inc/at32_msp.h b/bsp/at32/at32f407-start/board/inc/at32_msp.h index 21673cb290..6e6141ab75 100644 --- a/bsp/at32/at32f407-start/board/inc/at32_msp.h +++ b/bsp/at32/at32f407-start/board/inc/at32_msp.h @@ -20,5 +20,6 @@ void at32_msp_adc_init(void *instance); void at32_msp_hwtmr_init(void *instance); void at32_msp_can_init(void *instance); void at32_msp_emac_init(void *instance); +void at32_msp_usb_init(void *instance); #endif /* __AT32_MSP_H__ */ diff --git a/bsp/at32/at32f407-start/board/src/at32_msp.c b/bsp/at32/at32f407-start/board/src/at32_msp.c index 927bce5bd5..b995ee8c64 100644 --- a/bsp/at32/at32f407-start/board/src/at32_msp.c +++ b/bsp/at32/at32f407-start/board/src/at32_msp.c @@ -358,3 +358,70 @@ void at32_msp_emac_init(void *instance) gpio_init(GPIOD, &gpio_init_struct); } #endif /* BSP_USING_EMAC */ + +#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 */ + |
