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

          新聞中心

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

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

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏

          在HID的8種描述符中,最為重要而且復(fù)雜的應(yīng)該是報(bào)表描述符,其定義了數(shù)據(jù)的存儲(chǔ)格式和實(shí)際意義。如果能夠正確的理解報(bào)表描述符,那么對(duì)數(shù)據(jù)的處理就能達(dá)到應(yīng)用自如了,所以在設(shè)計(jì)描述符的時(shí)候,一定好多話費(fèi)時(shí)間來(lái)理解和編寫這一部分的內(nèi)容。特別要主要以下幾點(diǎn):

          1. 輸入輸出等項(xiàng)使用的數(shù)據(jù)必須是整數(shù)字節(jié),如果沒(méi)有完全使用到,也必須通過(guò)說(shuō)明來(lái)補(bǔ)齊。

          2.主要報(bào)表的三種項(xiàng)的應(yīng)用及使用范圍。

          命令請(qǐng)求:

          HID設(shè)備類特定的命令有6個(gè):Get_Report、Get_Idle、Get_Protocol、Set_Report、Set_Idle、Set_Protocol。

          通過(guò)近段時(shí)間來(lái)對(duì)NXP的HID例程的學(xué)習(xí),對(duì)其有了個(gè)大致的了解,USB一個(gè)包含以下幾個(gè)文件:

          1. hid.h文件對(duì)HID協(xié)議中使用到的各種描述符、字段等進(jìn)行了全面的描述和定義,在需要更改其他應(yīng)用時(shí),只需要選擇相應(yīng)的宏就可以,非常清晰明確。

          2.hiduser.c/hiduser.h文件對(duì)HID中需要使用到的6中設(shè)備命令請(qǐng)求函數(shù)進(jìn)行了編寫描述。

          3.usb.h文件對(duì)USB標(biāo)準(zhǔn)中需要使用的報(bào)告和描述符進(jìn)行全面的定義。

          4.usbcfg.h文件對(duì)USB中應(yīng)用到的電源、端點(diǎn)、接口、緩沖等進(jìn)行配置說(shuō)明,完全可以根據(jù)自己的需要來(lái)配置USB。

          5.usbcore.c/usbcore.h文件是USB協(xié)議內(nèi)核文件,是各種USB開(kāi)發(fā)必備文件,完成了USB的核心內(nèi)容,也是USB開(kāi)發(fā)的難點(diǎn)和重點(diǎn)。

          6.usbdesc.c/usbdesc.h文件為USB各種描述符的實(shí)現(xiàn)代碼,開(kāi)發(fā)不同的HID設(shè)備時(shí),需要在此文件中更改相應(yīng)描述。

          7.usbhw.c/usbhw.h文件實(shí)現(xiàn)與USB相關(guān)的硬件配置等。

          8.usbuser.c/usbuser.h文件實(shí)現(xiàn)各種事件和端點(diǎn)的實(shí)現(xiàn)代碼,根據(jù)自己的應(yīng)用更改端點(diǎn)代碼實(shí)現(xiàn)USB通信。

          在HID開(kāi)發(fā)中,報(bào)告描述符是最關(guān)鍵而且最復(fù)雜的描述符,因?yàn)樗鼪](méi)有專門的格式,隨意性比較大,但是HID的數(shù)據(jù)解析完全是依靠此描述符。

          下面是NXP例程中的HID的報(bào)告描述符:

          程序代碼都注釋了,這里不再詳細(xì)說(shuō)明,需要注意中間三段代碼:

          1. 第一段中定義了一個(gè)Input,數(shù)據(jù)為1位,一共有3個(gè)這樣是數(shù)據(jù);

          2. 第二段中定義了一個(gè)Input,數(shù)據(jù)為1位,一共有5個(gè)這樣是數(shù)據(jù),不過(guò)需要注意,這里定義的是常量。就是說(shuō)這里的5個(gè)位并沒(méi)用實(shí)際意義,完全是為了補(bǔ)齊一個(gè)字節(jié)的。這一點(diǎn)要注意,在報(bào)告描述符中,必須使用整數(shù)字節(jié)。

          3. 第三段中定義了一個(gè)Output,數(shù)據(jù)為1位,一共有8個(gè)這樣的數(shù)據(jù),也就是說(shuō),由8個(gè)位組成的一字節(jié)輸出數(shù)。

          到此我們不難看出此HID使用的是1字節(jié)是輸入和1字節(jié)是輸出,只是在1字節(jié)輸入數(shù)據(jù)中,這里只使用了3為。對(duì)于其他的描述符這里就不再說(shuō)明,可以直接對(duì)照上面的描述符格式就可以看懂,需要注意HID必須設(shè)置的幾個(gè)字段就行了。

          其他描述符:

          在這些描述符中我們可以看出設(shè)備的具體功能,以及通信使用的端點(diǎn),緩存等

          通過(guò)上述對(duì)描述符的了解,基本的HID信息我們已經(jīng)了解,下面就可以編寫程序,通過(guò)把獲取的數(shù)據(jù)進(jìn)行驗(yàn)證了,這里我們是通過(guò)按鍵按下給PC發(fā)送數(shù)據(jù),通過(guò)PC發(fā)送數(shù)據(jù)在設(shè)備上通過(guò)LED顯示的。

          到此就可以把代碼下載到開(kāi)發(fā)板上,并通過(guò)實(shí)驗(yàn)進(jìn)行驗(yàn)證了。下面我們采取兩種方法:

          1.使用周工例程中的HID Client上位機(jī)軟件,進(jìn)行驗(yàn)證。

          把開(kāi)發(fā)板下載代碼后插入PC,通過(guò)Device選擇我們的“LPC11Uxx USB HID”設(shè)備,下面我們可以看出,設(shè)備在沒(méi)有鍵按下時(shí)讀取為0x01,當(dāng)按下鍵時(shí),讀取為0x00。在Outputs中勾選相應(yīng)的復(fù)選框,我們可以看到開(kāi)發(fā)板上相應(yīng)的LED就別點(diǎn)亮了。



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