新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32的USB枚舉過程學習筆記(三)

        基于STM32的USB枚舉過程學習筆記(三)

        作者: 時間:2016-11-19 來源:網絡 收藏
        上一篇介紹到了主機上電復位USB設備,在控制傳輸的建立過程,發送了8個字節的數據給設備,這8個字節為0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00,該請求為USB標準設備請求中的GET_DESCRIPTOR請求。0x80表示標準設備請求,數據方向是設備到主機。0x60表示請求類型GET_DESCRIPTOR。0x01表示描述符類型是設備描述符。0x40表示描述符長度。

        設備在收到該請求以后,首先進行解析,根據請求中的0x40表示該控制傳輸有數據過程,因此進入到Data_Setup0()函數。該函數根據請求的不同描述符,執行不同的回調函數

        本文引用地址:http://www.104case.com/article/201611/318463.htm

        CopyRoutine(),并在DataStageIn()函數中把要發送給主機的描述符填入USB緩沖區,等待USB主機發送IN令牌包。

        主機在建立過程最后收到ACK以后,發送IN令牌包,從而進入到數據過程。在CTR_LP()函數中判斷是IN0中斷后,進入In0_Process()函數。在數據過程將之前填在USB緩沖器的設備描述符發給主機,并等待主機的應答。

        主機在確認接收到的設備描述符沒有出錯后,就會返回一個0數據長度的確認包,即控制傳輸的狀態過程。在CTR_LP()函數中判斷是OUT0中斷,進入Out0_Process()函數,由于在狀態過程,所以調用回調函數Process_Status_OUT()。

        下面和上篇一樣,對照著USB分析儀捕捉的數據分析獲取設備描述符這次控制傳輸的數據過程和狀態過程。

        下面通過串口打印信息查看獲取設備描述符控制傳輸過程中的數據包的數據。打印信息如下

        至此,USB主機成功獲取到設備描述符。打印信息最后可以看到,主機再次復位USB,將進入到設置地址的階段。



        關鍵詞: STM32USB枚舉過

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 东阿县| 巴林左旗| 卢湾区| 长治县| 枝江市| 辽宁省| 金溪县| 泾源县| 寿阳县| 永兴县| 布拖县| 昌宁县| 淮阳县| 广水市| 阳西县| 定结县| 简阳市| 江安县| 南乐县| 蕲春县| 安吉县| 阜康市| 吉木乃县| 夹江县| 聊城市| 滦南县| 临沧市| 岱山县| 吉木萨尔县| 轮台县| 江西省| 牙克石市| 青海省| 闵行区| 五华县| 合水县| 桃园县| 左云县| 讷河市| 安吉县| 龙江县|