圈圈USB学习笔记5--关于HID协议

 

HID协议规定了两种条目:短条目和长条目(这儿没有用到长条目,不管它).其中短条目的结构如下图所示: 圈圈USB学习笔记5--关于HID协议_第1张图片
要判断一个短条目具体是哪种类型,先查看bType确定出主条目、全局条目、局部条目的一种,然后再跟据bTag确定具体的类型。
1. 关于第三章USB鼠标的ReportDescriptor,
从条目前缀结构中可以发现,这一节的条目类型只有这三种(0xC0,唉,对不起你啊):
   0x1 --> 00 01 --> 后面跟一字节的(main)主条目
   0x5 --> 01 01 --> 后面跟一字节的(Global)全局条目
   0x9 --> 10 01 --> 后面跟一字节的(Local)局部条目
2. 然后从条目前缀的结构(高字节),可以看到具体的类型  圈圈USB学习笔记5--关于HID协议_第2张图片 圈圈USB学习笔记5--关于HID协议_第3张图片
以0x05,0x01为例(0x05要拆开来看--0x0与0x5):
0x5: 后面跟一字节的(Global)全局条目
0x0: UsePage
0x01: Generic Desktop Controls (这个需要参考:Hut1_12v2.pdf 【HID Usage Tables】)
3. 关于HID描述符中main global local 三者之间的关系
我感觉是这样的: HID中最关键的是main条目,而global local条目是用来描述main条目的。

点击(此处)折叠或打开

  1. Usage Page (Generic Desktop),                             05 01
  2. Usage (Mouse),                                            09 02
  3. Collection (Application),                                 A1 01
  4. Usage (Pointer),                                           09 01
  5. Collection (Physical),                                     A1 00
  6. Usage Page (Buttons),                                    05 09
  7. Usage Minimum (01),                                      19 01
  8. Usage Maximun (03),                                      29 03
  9. Logical Minimum (0),                                     15 00
  10. Logical Maximum (1),                                     25 01
  11. Report Count (3),                                        95 03
  12. Report Size (1),                                         75 01
  13. Input (Data, Variable, Absolute),                        81 02
  14. Report Count (1),                                        95 01
  15. Report Size (5),                                         75 05
  16. Input (Constant),                                        81 01
  17. Usage Page (Generic Desktop),                            05 01      
  18. Usage (X),                                               09 30
  19. Usage (Y),                                               09 31
  20. Logical Minimum (-127),                                  15 81   
  21. Logical Maximum (127),                                   25 7F   
  22. Report Size (8),                                         75 08
  23. Report Count (2),                                        95 02
  24. Input (Data, Variable, Relative),                        81 06
  25. End Collection,                                             C0
  26. End Collection                                             C0
3.1 上面是 《Device Class Definition for Human Interface Devices (HID) 》中的一个实例,是usb鼠标的Report Descriptor,按意义表述一下就是:
a. 先定义了一个普通桌面鼠标的应用(大)开集合
b. 再定义用途为指针的(小)开集合
c. 输入button
d. 填充位无实际意义
e. 输入的范围
f. 关闭小集合
g. 关闭大集合

你可能感兴趣的:(usb)