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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > USB協(xié)議深入分析 設(shè)置USB地址

          USB協(xié)議深入分析 設(shè)置USB地址

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          前面已經(jīng)解釋主控器怎么樣發(fā)送設(shè)備描述符下來,然后設(shè)備返回相應(yīng)的設(shè)備描述符。下一步主控器的動(dòng)作是做什么呢?由于在USB總線上的設(shè)備有很多,為了區(qū)分不同的設(shè)備通訊,就需要給每個(gè)設(shè)備分配一個(gè)地址,這跟網(wǎng)絡(luò)中的IP地址是一樣的,或者跟MAC地址也是一樣的。因而,接著下來就是主控器分配地址給設(shè)備,USB的設(shè)備地址是從1開始到127。下面就是接收到主控器發(fā)下來的數(shù)據(jù)包:
          00 05 01 00 00 00 00 00
          由USB_SETUP_PACKET定義具體地分析這個(gè)數(shù)據(jù),就可以知道應(yīng)做什么樣的響應(yīng)了。下面就來解釋這個(gè)操作。
          先取得bmRequestType的類型,也就是第一個(gè)字節(jié),它是00。從USB協(xié)議里查看,它的方向位是主控器發(fā)送給設(shè)備,由D6D5位就知道它是USB協(xié)議里定義的標(biāo)準(zhǔn)請(qǐng)求,由D4-D0位知道它是USB設(shè)備接收這個(gè)包數(shù)據(jù)。
          bRequest是05,從前面已經(jīng)介紹的類型,就知道它是設(shè)置地址,如下:
          SET_ADDRESS 5
          所以這個(gè)包需要按設(shè)置地址的格式去解釋后面的數(shù)據(jù)。
          由于USB協(xié)議可以知道,USB的設(shè)備地址放在字段wValue里,因它的值是01 00,按小端格式解釋就是0x0001了。其它相應(yīng)的字段wIndex和wLength應(yīng)都是0,如果是其它非0的數(shù)據(jù),是沒有定義的。
          USB的串行引擎通過這個(gè)地址來判斷是否接收總線上的數(shù)據(jù),如果發(fā)送的地址跟它一致,就會(huì)接收主控器發(fā)過來的數(shù)據(jù),當(dāng)然從這個(gè)設(shè)備發(fā)送出去的數(shù)據(jù)也帶有這個(gè)地址,因此就可以讓主控器識(shí)別不同的USB設(shè)備數(shù)據(jù)了。


          關(guān)鍵詞: USB協(xié)議USB地

          評(píng)論


          技術(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); })();