<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于STM32的USB枚舉過程學(xué)習(xí)筆記(三)

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

          作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
          上一篇介紹到了主機上電復(fù)位USB設(shè)備,在控制傳輸?shù)慕⑦^程,發(fā)送了8個字節(jié)的數(shù)據(jù)給設(shè)備,這8個字節(jié)為0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00,該請求為USB標準設(shè)備請求中的GET_DESCRIPTOR請求。0x80表示標準設(shè)備請求,數(shù)據(jù)方向是設(shè)備到主機。0x60表示請求類型GET_DESCRIPTOR。0x01表示描述符類型是設(shè)備描述符。0x40表示描述符長度。

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

          本文引用地址:http://www.ex-cimer.com/article/201611/318463.htm

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

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

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

          下面和上篇一樣,對照著USB分析儀捕捉的數(shù)據(jù)分析獲取設(shè)備描述符這次控制傳輸?shù)臄?shù)據(jù)過程和狀態(tài)過程。

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

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



          關(guān)鍵詞: STM32USB枚舉過

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();