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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > USB開發(fā)中易混淆的概念剖析

          USB開發(fā)中易混淆的概念剖析

          作者: 時間:2012-12-15 來源:網(wǎng)絡(luò) 收藏

          摘要:隨著技術(shù)日趨成熟,開發(fā)者只需要關(guān)注頂層開發(fā)即可,這樣雖然戰(zhàn)少了工作量,但容易使開發(fā)者忽略基礎(chǔ)理論與,導(dǎo)致的弊端在于開發(fā)者一旦遇到問題,往往不知如何解決。作者基于多年USB開發(fā)經(jīng)驗,針對當(dāng)前很多USB開發(fā)者容易混淆的,進行深入淺出的剖析,針對枚舉和重枚舉的區(qū)別、不同啟動方式的區(qū)別等問題,進行了歸納總結(jié)。本文從對比的角度分析問題,有助于開發(fā)者理清USB的工作機理。
          關(guān)鍵詞:USB;枚舉;重枚舉;重王;固件程序;EZ-USB

          USB(Universal Serial Bus)通訊具有傳輸速度快、可靠性高、支持即插即用等優(yōu)點,已經(jīng)逐步成為現(xiàn)代數(shù)據(jù)傳輸?shù)闹髁鞣绞?,獲得了廣泛的應(yīng)用。
          然而,在USB應(yīng)用技術(shù)越來越成熟的同時,開發(fā)人員對于USB技術(shù)的運用越來越傾向于頂層使用,對于USB的底層原理與基礎(chǔ)協(xié)議關(guān)注的很少,這會導(dǎo)致在實際開發(fā)過程中,遇到問題之后不知從何處著手解決。只有了解了USB的傳輸協(xié)議或者是底層傳輸通訊原理,才能很好的找出解決途徑。
          文中基于作者多年的USB開發(fā)使用經(jīng)驗,并且結(jié)合目前研究與生產(chǎn)中廣泛使用的幾種USB控制芯片,包括Cypress公司的enCoRe系列芯片、EZ-USB芯片以及Netchip公司的NET2888芯片等等,總結(jié)了它們在開發(fā)使用中最容易遇到而又非常重要的幾個問題:USB設(shè)備與主機建立通訊過程中枚舉和重枚舉的區(qū)別,這個區(qū)別體現(xiàn)在不同的USB控制芯片當(dāng)中,它對于設(shè)備的啟動以及連接主機都有深刻影響;重枚舉與重置的區(qū)別,很多把這個混淆,導(dǎo)致在應(yīng)用中出錯;固件程序控制多種啟動方式的區(qū)別,同樣的代碼控制著不同的啟動方式,理解了這個過程才能很好地控制芯片的工作。

          1 USB通訊中的重要概念
          1.1 枚舉與重枚舉的區(qū)別
          在USB通訊協(xié)議中,有一個重要的概念是檢測設(shè)備,也可稱為枚舉,它是主機在應(yīng)用程序與USB設(shè)備通信之前,了解該設(shè)備的設(shè)置與能力并且給該設(shè)備指定一個驅(qū)動程序的過程,它是任何USB設(shè)備正常工作所必須的部分。
          對于普通的USB設(shè)備,主機通過枚舉的過程獲取設(shè)備的描述符,了解設(shè)備并根據(jù)設(shè)備描述符中的PID(產(chǎn)品識別碼)與VID(供應(yīng)商識別碼)值選擇合適的驅(qū)動程序安裝,這樣就與設(shè)備建立了USB連接,之后就可以進行正常USB通訊,枚舉的過程如圖1所示。

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

          a.JPG


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: USB 概念

          評論


          相關(guān)推薦

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