HK32F103x/C/D/E是深圳市航順芯片技術研發有限公司推出的中大容量的32位MCU芯片,內部集成豐富且強大的外設,如SPI/IIC/UART/USB/FSMC/SDIO等。
有客戶在快速替換使用過程中,遇到過使用HAL庫的USB枚舉失敗的情況:VID/PID值等設備描述符內容不正確。使用bus hound捕獲USB包,觀察設備描述符內容,如下紅色箭頭所指IN包數據部分,大多數時候是不對的,即不是預期值,偶發是對的。

通過分析客戶代碼,且使用邏輯分析儀+DSview跟蹤USB通信數據,發現是在枚舉過程中,第三次獲取設備描述符的時候出錯,如下:

進一步分析發現并確認(根本原因):
USB設備在收到STALL之后的下一條SETUP的情況下,硬件會設置Tx狀態為Valid,這導致接下來IN包來了之后,USB直接就把還未準備好的數據發送給主機,即發送的數據不是預設值/亂碼,例如一部分為本次要發送的數據,另外一部分為上一次的數據。
解決方案:
屏蔽掉軟件設置STALL的代碼,例如在HAL庫的HID類,屏蔽下圖處。

來源:航順芯片
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
mcu
+關注
關注
147文章
19057瀏覽量
401987 -
usb
+關注
關注
60文章
8462瀏覽量
285483 -
HAL庫
+關注
關注
1文章
121瀏覽量
7721 -
航順芯片
+關注
關注
1文章
113瀏覽量
23687 -
HK32MCU
+關注
關注
0文章
29瀏覽量
453
發布評論請先 登錄
相關推薦
熱點推薦
HK32MCU應用筆記(十六)| HK32F103xC/D/E-Timer的應用及注意事項
HK32MCU應用筆記(十六)| HK32F103xC/D/E-Timer的應用及注意事項
HK32MCU應用筆記(十五)| HK32F103xC/D/E-同步注入模式下,ADC2工作狀態不能單獨配置
HK32MCU應用筆記(十五)| HK32F103xC/D/E-同步注入模式下,ADC2工作狀態不能單獨配置
HK32MCU應用筆記(十)| HK32F103xC/D/E的ADC常規和注入通道同時觸發時的處理機制
HK32MCU應用筆記(十)| HK32F103xC/D/E的ADC常規和注入通道同時觸發時的處理機制
HK32MCU應用筆記(九)| HK32F103x8xB系列CAN的應用解決方案
HK32MCU應用筆記(九)| HK32F103x8xB系列CAN的應用解決方案
HK32MCU應用筆記(二十)| HK32F103xC/D/E USB枚舉情況分析(二)
評論