新聞中心

        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枚舉過

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 潍坊市| 玛曲县| 汝城县| 全椒县| 余姚市| 潞城市| 丰顺县| 白水县| 和硕县| 锦州市| 金寨县| 赣州市| 南昌县| 宜都市| 新田县| 固镇县| 如东县| 兴安盟| 霍州市| 白水县| 聊城市| 吴桥县| 玛多县| 平阳县| 古浪县| 鄂州市| 禄劝| 桃源县| 屏东市| 浮梁县| 晋宁县| 海淀区| 遂平县| 甘谷县| 开鲁县| 绥化市| 丹东市| 准格尔旗| 尼玛县| 怀来县| 财经|