基于 Azure USBx 開發(fā) USB_OTG_HS MSC 應(yīng)用的幾個問題
某客戶在使用 STM32U599 開發(fā)一款智能手表時,需要使用 USB_OTG_HS 實現(xiàn) USB Storage 功能。建議客戶參考“STM32U575I-EVApplicationsUSBXUx_Device_MSC”例程來實現(xiàn)。但是,客戶抱怨參考 U575 的例程也無法調(diào)試通過,程序在 USB_CoreInit()無法初始化成功。在支持解決了客戶初始化失敗的問題后,客戶反饋仍然無法調(diào)通 Azure USBx 的
MSC storage 程序。
本文主要介紹使用 STM32U599 USB_HS 開發(fā) USBx 應(yīng)用時的幾個問題點,詳細配置和移植過程,讀者可自行參考本文附件中的工程源碼。
2. 問題調(diào)研與驗證
客戶在使用 STM32CubeMX 生成 USBx MSC Device 工程時采用的默認 RCC 時鐘樹配置如下:
3. 問題分析與解決辦法
USB 初始化失敗的問題既然能夠穩(wěn)定復現(xiàn),那么問題應(yīng)該比較好找,經(jīng)過查看 DS13633 和RM0456 對于 STM32U599 的 USB_OTG_HS 外設(shè)有如下相關(guān)描述。
根據(jù)文檔描述,也就是說 USB_OTG_HS 這個 IP Core 工作于 60MHZ,它是由OTG_HS_PHY Clock 提供的,為了保證其精度必須使用外部晶振 HSE,且 OTG_HS_PHY 的時鐘頻率僅支持 16/19.2/20/24/26/32 這幾個頻率大小。
在 STM32CubeMX 里將 USB_OTG_HS 時鐘重新配置如下:
更多內(nèi)容請您下載全文查看。
評論