MSCBSC 移動(dòng)通信論壇
搜索
登錄注冊(cè)
網(wǎng)絡(luò)優(yōu)化工程師招聘專欄 4G/LTE通信工程師最新職位列表 通信實(shí)習(xí)生/應(yīng)屆生招聘職位

  • 閱讀:1233
  • 回復(fù):0
轉(zhuǎn)帖 當(dāng)BLE遇上MEMS——HID報(bào)告描述符介紹
微信Czh6402
中級(jí)會(huì)員
鎵嬫満鍙風(fēng)爜宸查獙璇? style=


 發(fā)短消息    關(guān)注Ta 

積分 530
帖子 106
威望 21132 個(gè)
禮品券 0 個(gè)
專家指數(shù) 0
注冊(cè) 2020-9-23
專業(yè)方向 
回答問(wèn)題數(shù) 0
回答被采納數(shù) 0
回答采納率 0%
 
發(fā)表于 2020-10-19 09:28:31  只看樓主 

當(dāng)BLE遇上MEMS——HID報(bào)告描述符介紹

本帖最后由 lb8820265 于 2020-9-13 19:13 編輯

HID(human interface device)也就是人機(jī)接口設(shè)備,我們常見(jiàn)的鼠標(biāo)鍵盤游戲手柄等都是HID,操作系統(tǒng)自帶HID驅(qū)動(dòng)的,有USB接口的,也有藍(lán)牙接口的,都是相似的通信協(xié)議。因此這里參考USB接口的HID協(xié)議進(jìn)行介紹。主要參考https://www.usb.org/hid網(wǎng)站中的兩篇文檔《Device Class Definition for HID 1.11 》《HID Usage Tables 1.2 》,可以直接在官網(wǎng)下載,也可以從本文附件中下載。


HID有自己協(xié)議,叫做報(bào)告描述符,用來(lái)描述發(fā)送的數(shù)據(jù)代表的含義(并不是發(fā)送的數(shù)據(jù)),包括是什么設(shè)備:鼠標(biāo)、鍵盤、手柄等,和每一字節(jié)的含義。下面以鍵盤的報(bào)告描述符為例具體介紹。

參考例程:

nRF5_SDK_15.3.0_59ac345examplesle_peripheralle_app_hids_keyboard

main.c函數(shù)中的報(bào)告描述符如下表。

報(bào)告描述符簡(jiǎn)介0x05, 0x01, // Usage Pg (Generic Desktop)這是一個(gè)global類Usage Page作用數(shù)據(jù)0x09, 0x06, // Usage (Keyboard)表示這是一個(gè)鍵盤0xA1, 0x01, // Collection: (Application)表示下面所包含的是對(duì)鍵盤的解釋0x05, 0x07, // Usage Pg (Key Codes)定義的是按鍵碼0x19, 0xE0, // Usage Min (224)0x29, 0xE7, // Usage Max (231)按鍵碼分別是 224~231,共總有 8 個(gè)按鍵碼0x15, 0x00, // Log Min (0)0x25, 0x01, // Log Max (1)按鍵碼的值是 0 和 1,分別代表放開(kāi)和按下0x75, 0x01, // Report Size (1)0x95, 0x08, // Report Count (8)用 8 個(gè) bit 分別表示 8 個(gè)按鍵的狀態(tài)0x81, 0x02, // Input: (Data, Variable,Absolute)將這 8 個(gè) bit 添加到本報(bào)告中0x95, 0x01, // Report Count (1)0x75, 0x08, // Report Size (8)0x81, 0x01, // Input: (Constant)另外再預(yù)留 8 個(gè) bit 備用,暫時(shí)沒(méi)用0x95, 0x05, // Report Count (5)0x75, 0x01, // Report Size (1)定義 5 個(gè) 1bit0x05, 0x08, // Usage Pg (LEDs)這是 LED0x19, 0x01, // Usage Min (1)0x29, 0x05, // Usage Max (5)5 個(gè) bit 分別對(duì)應(yīng) LED1~LED50x91, 0x02, // Output: (Data, Variable,Absolute)將這 5 個(gè) bit 添加到本報(bào)告中,LED 需要作為 OUT0x95, 0x01, // Report Count (1)0x75, 0x03, // Report Size (3)0x91, 0x01, // Output: (Constant)再增加 3 個(gè) bit,與上面 5 個(gè) bit 組成一個(gè)字節(jié)0x95, 0x06, // Report Count (6)0x75, 0x08, // Report Size (8)定義 6 個(gè)字節(jié)0x15, 0x00, // Log Min (0)0x25, 0x65, // Log Max (101)每個(gè)字節(jié)的取值范圍是 0~1010x05, 0x07, // Usage Pg (Key Codes)這個(gè)也是鍵盤碼0x19, 0x00, // Usage Min (0)0x29, 0x65, // Usage Max (101)分別是鍵盤碼 0~鍵盤碼 1010x81, 0x00, // Input: (Data, Array)將這 6 個(gè)字節(jié)添加到本報(bào)告中,表示同時(shí)可產(chǎn)生 6 個(gè)鍵值。0xC0, // End Collection結(jié)束

表中左邊每一列由一個(gè)或者兩個(gè)數(shù)字組成,第一個(gè)數(shù)字是前綴,第二個(gè)是數(shù)據(jù)(可無(wú))

例如:0x05, 0x01, // USAGE_PAGE (Generic Desktop)

單位需要多本通信工程師職稱證書掛資質(zhì),歡迎聯(lián)系   150-0759-9549-微同

0x05表示前綴,0x01為數(shù)據(jù)部分,先看前綴,0x05轉(zhuǎn)換成二進(jìn)制,就是00000101,按照HID類協(xié)議的定義,這個(gè)字節(jié)被分成3個(gè)部分:(參考hid1_11.pdf

bit0~bit1代表的是這個(gè)前綴后面跟的數(shù)據(jù)長(zhǎng)度,兩位可以表示最大4字節(jié)的數(shù)據(jù),即bsize


bit2~bit3代表的是這個(gè)前綴的類型,總共可以有三種類型:00=main,01=global,10=local,11=reserved;

bit4~bit7代表前綴的tag,這里根據(jù)bit2~bit3的不同類型有不同的定義,例如global類型下的定義如下圖。(參考hid1_11.pdf

0000就表示Usage Page。所以前綴0x05代表的含義就是:一個(gè)global類型Usage Page作用數(shù)據(jù)量為1的前綴。


那我們做一個(gè)練習(xí)題:第二行出現(xiàn)的0x09,二進(jìn)制就是:00001001,這就是local類型Usage Page作用數(shù)據(jù)量為1的前綴(local類型具體可以查看hid1_11.pdf的Local Items章節(jié))。

下面來(lái)看數(shù)據(jù)0x01的作用

前綴是global類型Usage Page作用,那么這就要查看Usage Page作用的具體介紹。(參考hut1_2.pdf)

0x01表示Generic Desktop,表示桌面控制類型的設(shè)備,但具體是什么設(shè)備就要看第二行。


前面介紹了第二行0x09表示local類型Usage Page作用,參數(shù)為0x06,0x06表示鍵盤,查表如下。

這里主要就是介紹報(bào)告描述符的查閱方法,其他的描述符同樣可以按照上述方法進(jìn)行查閱。


鍵盤描述符的后定義的是發(fā)送數(shù)據(jù)的類型與格式。如下:

翻譯出來(lái)就是,該協(xié)議支持一次最多發(fā)送6個(gè)按鈕(鍵值0~101),支持最多同時(shí)按下8個(gè)功能按鍵(鍵值224~231)。鍵值表詳見(jiàn)附件。


舉例

例如我想要發(fā)送向上按鈕,查表得出向上的鍵值是0x52(82),所以發(fā)送的8Byte數(shù)據(jù)為。

Byte0Byte1Byte2Byte3Byte4Byte5Byte6Byte70x000x000x520x000x000x000x000x00

例如我想發(fā)送Ctrl+A,查表得出左Ctrl的鍵值為0xE0(224),也就是第一字節(jié)的第一位為1,A的鍵值為4。所以發(fā)送的8Byte數(shù)據(jù)為。

Byte0Byte1Byte2Byte3Byte4Byte5Byte6Byte70x800x000x040x000x000x000x000x00此帖出自MEMS傳感器論壇


掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場(chǎng)景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測(cè)試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):6G至簡(jiǎn)無(wú)線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國(guó)聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國(guó)電信5G NTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國(guó)移動(dòng)算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1
  • 對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    [充值威望,立即自動(dòng)到帳] [VIP貴賓權(quán)限+威望套餐] 另有大量?jī)?yōu)惠贈(zèng)送活動(dòng),請(qǐng)光臨充值中心
    充值擁有大量的威望和最高的下載權(quán)限,下載站內(nèi)資料無(wú)憂

    快速回復(fù)主題    
    標(biāo)題
    內(nèi)容
     上傳資料請(qǐng)點(diǎn)左側(cè)【添加附件】

    當(dāng)前時(shí)區(qū) GMT+8, 現(xiàn)在時(shí)間是 2025-01-09 21:12:32
    渝ICP備11001752號(hào)  Copyright @ 2006-2016 mscbsc.com  本站統(tǒng)一服務(wù)郵箱:mscbsc@163.com

    Processed in 0.342784 second(s), 18 queries , Gzip enabled
    TOP
    清除 Cookies - 聯(lián)系我們 - 移動(dòng)通信網(wǎng) - 移動(dòng)通信論壇 - 通信招聘網(wǎng) - Archiver