新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LPC1114/LPC11U14和LPC1343對比學習(八)USB

        LPC1114/LPC11U14和LPC1343對比學習(八)USB

        作者: 時間:2016-11-27 來源:網絡 收藏

        在HID的8種描述符中,最為重要而且復雜的應該是報表描述符,其定義了數據的存儲格式和實際意義。如果能夠正確的理解報表描述符,那么對數據的處理就能達到應用自如了,所以在設計描述符的時候,一定好多話費時間來理解和編寫這一部分的內容。特別要主要以下幾點:

        1. 輸入輸出等項使用的數據必須是整數字節,如果沒有完全使用到,也必須通過說明來補齊。

        2.主要報表的三種項的應用及使用范圍。

        命令請求:

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

        通過近段時間來對NXP的HID例程的學習,對其有了個大致的了解,USB一個包含以下幾個文件:

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

        2.hiduser.c/hiduser.h文件對HID中需要使用到的6中設備命令請求函數進行了編寫描述。

        3.usb.h文件對USB標準中需要使用的報告和描述符進行全面的定義。

        4.usbcfg.h文件對USB中應用到的電源、端點、接口、緩沖等進行配置說明,完全可以根據自己的需要來配置USB。

        5.usbcore.c/usbcore.h文件是USB協議內核文件,是各種USB開發必備文件,完成了USB的核心內容,也是USB開發的難點和重點。

        6.usbdesc.c/usbdesc.h文件為USB各種描述符的實現代碼,開發不同的HID設備時,需要在此文件中更改相應描述。

        7.usbhw.c/usbhw.h文件實現與USB相關的硬件配置等。

        8.usbuser.c/usbuser.h文件實現各種事件和端點的實現代碼,根據自己的應用更改端點代碼實現USB通信。

        在HID開發中,報告描述符是最關鍵而且最復雜的描述符,因為它沒有專門的格式,隨意性比較大,但是HID的數據解析完全是依靠此描述符。

        下面是NXP例程中的HID的報告描述符:

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

        1. 第一段中定義了一個Input,數據為1位,一共有3個這樣是數據;

        2. 第二段中定義了一個Input,數據為1位,一共有5個這樣是數據,不過需要注意,這里定義的是常量。就是說這里的5個位并沒用實際意義,完全是為了補齊一個字節的。這一點要注意,在報告描述符中,必須使用整數字節。

        3. 第三段中定義了一個Output,數據為1位,一共有8個這樣的數據,也就是說,由8個位組成的一字節輸出數。

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

        其他描述符:

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

        通過上述對描述符的了解,基本的HID信息我們已經了解,下面就可以編寫程序,通過把獲取的數據進行驗證了,這里我們是通過按鍵按下給PC發送數據,通過PC發送數據在設備上通過LED顯示的。

        到此就可以把代碼下載到開發板上,并通過實驗進行驗證了。下面我們采取兩種方法:

        1.使用周工例程中的HID Client上位機軟件,進行驗證。

        把開發板下載代碼后插入PC,通過Device選擇我們的“LPC11Uxx USB HID”設備,下面我們可以看出,設備在沒有鍵按下時讀取為0x01,當按下鍵時,讀取為0x00。在Outputs中勾選相應的復選框,我們可以看到開發板上相應的LED就別點亮了。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 左云县| 调兵山市| 香格里拉县| 韶关市| 泸溪县| 呼玛县| 墨脱县| 壤塘县| 冷水江市| 乌拉特前旗| 梅河口市| 萨迦县| 芦山县| 武川县| 宜章县| 遵义县| 武鸣县| 英超| 手机| 闸北区| 廊坊市| 张家川| 安溪县| 香河县| 土默特左旗| 林州市| 图们市| 应城市| 汝州市| 盐城市| 商城县| 昌邑市| 涿州市| 西昌市| 邹城市| 岑巩县| 略阳县| 乾安县| 内乡县| 石阡县| 邮箱|