转自:https://blog.csdn.net/qq_16777851/article/details/86177941
一、USB HID简介
USB HID类是USB设备的一个标准设备类,属于人机交互操作的设备,包括鼠标、键盘等,主要用于人与计算机进行交互,它还可用来传输数据、控制设备等,如影像显示设备可能使用HID 接口来做亮度、对比度的软件控制,而使用传统的影像接口来传送要显示的数据。 USB 扩音器可以使用实时传输来播放语音,同时使用HID 接口来控制音量、 低音等。HID设备可以作为低速、 全速、高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断方式。
二、特点
1.交换的数据储存在称为报表(Report ) 的结构内
2.一个报表可以使用多笔事务,低速设备每一笔事务最大是8B ,全速设备每一笔事务最大是64B, 高速设备每一笔事务最大是1024B。
3.HID 设备的最大传输速度有限制。主机可以保证低速的中断端点每10ms 内最多 1笔事务,每一秒最多是 800B 。保证全速端点每 1ms 一笔事务,每一秒最多是64000B 。保证高速端点每 125 us 三笔事务,每一秒最多是 24.576MB
4.主机会定时轮询设备(中断传输),以取得最新的数据,因为设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动,而usb不支持硬件中断。
三、传输方式
所有的 HID 传输都是使用默认控制管道或是一个中断管道, HID 设备必须有一个中断输入端点来传送数据到主机,中断输出端点则不是必需的。
1.控制传输(端点0,默认的传输方式)
1)接收和响应USB控制和类数据的请求(主机–>设备)
2)从主机接收数据(主机–>设备)
3)在由HID类驱动程序轮询时传输数据,使用Get_Reportrequest(设备–>主机)
2.中断传输(端点1或2,中断输入必须,中断输出可选)
1)用来传输低延时的数据
2)中断输入必须有(设备–>主机)
3)中断输出可选,如果没有中断输出管道,主机会在控制管道上使用HID设备特有的 Set_Report 请求来传送报表
4)需在端点描述符中进行配置
四、描述符
HID 设备除了支持 USB 设备的 5 种标准描述符(设备、配置、接口、端点和字符串描述符),还支持 HID 设备特有的 3 种描述符(HID 、报表(Report )和实体(Physical )描述符)。
1.HID描述符:要作用是用来识别 HID 通信所使用的额外描述符
2.报表描述符:定义了执行设备功能的数据格式和使用方法
3.实体描述符:可选描述符,其提供关于用于激活设备上的控件的人体的一部分或多个部分的信息