航順芯片HK32F103xC/D/E USB枚舉情況分析
HK32F103x/C/D/E是航順芯片公司推出的中大容量的32位MCU芯片,內(nèi)部集成豐富且強大的外設,如SPI/IIC/UART/USB/FSMC/SDIO等。有客戶在快速替換使用過程中,遇到過使用HAL庫的USB枚舉失敗的情況:直接插入電腦USB口是枚舉失敗,不能識別;經(jīng)過HUB插入的話能識別,但是驅(qū)動有問題(帶黃色三角形、感嘆號)。
通過邏輯分析儀+DSView上位機進行跟蹤,分析通信數(shù)據(jù),注意到通信異常,如下紅色箭頭所指:


進一步分析確認(根本原因):
在設定地址的包之后(條件1),接著下一個獲取設備描述符的請求包(setup)來了之后(條件2),芯片會把Tx狀態(tài)設置為Valid(而不是預期的NAK),導致在隨后的IN包來了之后馬上發(fā)出DATA1[],即還未來得及填充有效數(shù)據(jù)。所以導致后續(xù)枚舉失敗。
解決方案:
進入USB中斷處理函數(shù)PCD_EP_ISR_Handler()里面,把USB端點0的Tx狀態(tài)設置為NAK即可,即添加上以下這句就可以了:PCD_SET_EP_TX_STATUS(USB, 0, USB_EP_TX_NAK);

添加之后,可以正常枚舉(如下)和進行USB通信功能。
如需要了解更多ST意法半導體MCU產(chǎn)品,請聯(lián)系核心代理商,穎特新科技,或者掃碼聯(lián)系我們!
在之前的介紹中,我們也為大家介紹了《航順芯片HK32F103xC/D/E-DAC的應用及注意事項》,也是目前我們主推的非常成熟的解決方案!

編輯:zzy 最后修改時間:2022-06-23