前言
某客戶在使用 STM32U599 開發(fā)一款智能手表時,需要使用 USB_OTG_HS 實現(xiàn) USBStorage 功能。建議客戶參考“STM32U575I-EVApplicationsUSBXUx_Device_MSC”例程來實現(xiàn)。但是,客戶抱怨參考 U575 的例程也無法調試通過,程序在 USB_CoreInit()無法初始化成功。在支持解決了客戶初始化失敗的問題后,客戶反饋仍然無法調通 Azure USBx 的MSC storage 程序。
本文主要介紹使用 STM32U599 USB_HS 開發(fā) USBx 應用時的幾個問題點,詳細配置和移植過程,讀者可自行參考本文附件中的工程源碼。
問題調研與驗證
問題分析與解決辦法
USB 初始化失敗的問題既然能夠穩(wěn)定復現(xiàn),那么問題應該比較好找,經過查看 DS13633 和RM0456 對于 STM32U599 的 USB_OTG_HS 外設有如下相關描述。
小結
筆者后期在 STM32U599J_DK 板上進行測試,發(fā)現(xiàn) STM32U599 的 USB_OTG_HS 外設時鐘(OTG HS Clock Mux),對于頻率及時鐘源具有較強的選擇性,強烈建議 OTG HSClock Mux 選擇 HSE(16MHZ)作為時鐘。