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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > LPC1114/LPC11U14和LPC1343對(duì)比學(xué)習(xí)(八)USB

          LPC1114/LPC11U14和LPC1343對(duì)比學(xué)習(xí)(八)USB

          作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          這3種芯片的功能非常多,到此基本上我們已經(jīng)介紹完成,只有AD、WDT等沒有介紹,鑒于其難度不大這方面的內(nèi)容就不再說明。下面將進(jìn)行終極篇的學(xué)習(xí)----USB學(xué)習(xí),由于USB難度非常大,這一貼可能會(huì)編寫很長(zhǎng)時(shí)間,這里將主要學(xué)習(xí)HID的應(yīng)用。

          LPC1114沒有USB功能,所以這里只能針對(duì)LPC1343和LPC11U14進(jìn)行說明。對(duì)于這兩種有USB功能的芯片其還是區(qū) 別,LPC1343內(nèi)部集成了USB驅(qū)動(dòng),而LPC11U14沒有此功能,所以LPC1343USB開發(fā)比較簡(jiǎn)單一點(diǎn),價(jià)格也要貴一點(diǎn)。為了編寫出通用的 USB驅(qū)動(dòng)代碼,這里將先對(duì)LPC11U14 USB進(jìn)行學(xué)習(xí),之后在移植到LPC1343。

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

          鑒于USB開發(fā)難度,這里將不會(huì)從零開始開發(fā)USB驅(qū)動(dòng),我們將對(duì)NXP設(shè)計(jì)的USB驅(qū)動(dòng)進(jìn)行學(xué)習(xí),并改進(jìn)成一個(gè)自定義的HID,應(yīng)用在自己的項(xiàng)目中。

          USB HID(NXP原廠代碼).rar

          對(duì)于USB的硬件設(shè)計(jì)非常簡(jiǎn)單,具體設(shè)計(jì)如下圖所示:

          1. 除了連接好USB的兩路差分信號(hào)線外,還必須連接好電源,對(duì)于P0_3是非常重要,不管是否使用USB電源供電,此管腳必須接高電平,否則無法設(shè)別USB設(shè)備。而且,如果要應(yīng)用USB ISP功能,此管腳也必須接高電平。

          2. P0_6管腳為軟件連接端口,可以通過此管腳連接或斷開USB設(shè)備。

          3. 全速和高速設(shè)備的上拉電阻接在D+端,而低速設(shè)備是接在D-端的。

          4. USB設(shè)備取電:在設(shè)備沒有配置之前最多只能從Vbus上獲取100mA電流,電流的大小是由設(shè)備配置的,配置后最多可獲取500mA電流。

          USB基礎(chǔ)知識(shí):

          1. 在USB1.0和USB1.1中只支持1.5M/s的低速模式和12M/s的全速模式,在USB2.0中又加入了480M/b的高速模式,而在USB3.0中速度到達(dá)5GB/s。

          2. USB集成器只能擴(kuò)展USB接口,而能擴(kuò)展帶寬,一個(gè)主控制器的帶寬是固定的。

          3. 在USB1.1中集成器最多4層,USB2.0中最多6層。

          4. 低速和全速模式下采用電壓差分傳輸信號(hào),在高速模式下,采用電流傳輸。

          5. USB采用NRZI編碼方式,0數(shù)據(jù)電平翻轉(zhuǎn),1數(shù)據(jù)電平不翻轉(zhuǎn)。

          USB的描述符應(yīng)該是USB開發(fā)主重要的部分,如果能夠正確的配置好描述符,USB開發(fā)就完成了一半了。

          描述符:

          對(duì)于HID設(shè)備的描述除了5個(gè)USB的標(biāo)準(zhǔn)描述:設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符、字符串描述符。

          HID設(shè)備還有3個(gè)特點(diǎn)描述符:HID描述符、報(bào)告描述符、實(shí)體描述符。

          在5個(gè)標(biāo)準(zhǔn)描述符中與HID設(shè)備有關(guān)的部分有:

          1. 設(shè)備描述符中bDeviceClass、bDeviceSubClass、bDeviceProtocol三個(gè)字段的值必須為零。

          2. 接口描述符中bInterfaceClass的值必須為0x03,bInterfaceSubClass的值為1時(shí)表示Boot Device,即表示HID是一個(gè)啟動(dòng)設(shè)備。

          面的描述符之間有一定的關(guān)系,一個(gè)設(shè)備只有一個(gè)設(shè)備描述符,而一個(gè)設(shè)備描述符可以包含多個(gè)配置描述符,而一個(gè)配置描述符可以包含多個(gè)接口描述符,一個(gè)接口使用了幾個(gè)端點(diǎn),就有幾個(gè)端點(diǎn)描述符。這間描述符是用一定的字段構(gòu)成的,分別如下說明:

          報(bào)表描述符

          報(bào)表描述符定義了執(zhí)行設(shè)備功能的數(shù)據(jù)格式和使用方法。

          報(bào)表描述符和USB的其他描述符是不一樣的,它不是一個(gè)簡(jiǎn)單的表格,報(bào)表描述符是USB所有描述符中最復(fù)雜的。報(bào)表描述符非常復(fù)雜而有彈性,因?yàn)樗枰幚砀鞣N用途的設(shè)備。報(bào)表的數(shù)據(jù)必須以簡(jiǎn)潔的格式來儲(chǔ)存,這樣才不會(huì)浪費(fèi)設(shè)備內(nèi)的儲(chǔ)存空間以及數(shù)據(jù)傳輸時(shí)的總線時(shí)間。

          實(shí)際上可以這樣理解,報(bào)表內(nèi)容的簡(jiǎn)潔,是通過報(bào)表描述符全面的、復(fù)雜的數(shù)據(jù)描述實(shí)現(xiàn)的。

          報(bào)表描述符必須先描述數(shù)據(jù)的大小與內(nèi)容。報(bào)表描述符的內(nèi)容與大小因設(shè)備的不同而不同,在進(jìn)行報(bào)表傳輸之前,主機(jī)必須先請(qǐng)求設(shè)備的報(bào)表描述符,只有得到了報(bào)表描述符才可正確解析報(bào)表的數(shù)據(jù)。

          報(bào)表描述符是報(bào)表描述項(xiàng)目(Item)的集合,每一個(gè)描述項(xiàng)目都有相對(duì)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),項(xiàng)目很多,通過編碼實(shí)現(xiàn)。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: LPC1114LPC11U14LPC1343US

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