在USB协议中,HID设备的接口描述符扮演着至关重要的角色。它详细规定了HID设备的类型和特性,包括bInterfaceClass、bInterfaceSubClass和bInterfaceProtocol三个关键字段。这些字段的准确设置,直接决定了HID设备能否被正确识别和配置。x:表示HID设备的接口子类 在USB协议中,HID设备的接口描述符包含多个字段,其中bInterface...
可以看到,在USB总线上主机每5ms成功取到一次数据,也可以看到DATA0和DATA1是交替发送;同时还可以看到在主机成功取到数据之前,还有4次也就是4毫秒的时间内该端点回复NAK;这样算下来,HID汇报率是200Hz。 假如我们修改代码如下,也就是把APP_Timer的溢出时间修改成1ms,是否就可以达到1000 Hz的汇报率呢? 和上述代码相...
为了把一个设备识别为HID类别,设备在定义描述符的时候必须遵守HID规范。 从框图中,可以看出除了USB标准定义的一些描述符外,HID设备还必须定义HID描述符。另外设备和主机的通信是通过报告的形式来实现的,所以还必须定义报告描述符;而物理描述符不是必需的。还有就是HID描述符是关联于接口(而不是端点)的,所以设备不需...
1.工具准备 USB 监视软件:Device Monitoring Studio7.25 PC端软件:单片机多功能调试助手 2.发送数据包 接收数据包 3.数据分析 usb hid(pc软件)发送帧(payload)数据解析: payload总长度为64字节 0c 7e 55 09 00 00 01
0x81, 0x00, // INPUT (Data,Ary,Abs) 0xc0 }; 报告描述符由74改为63 //usbd_hid.h #define HID_MOUSE_REPORT_DESC_SIZE 63U //74U 增加变量声明 usb_device.h中添加外部变量声明,后面main函数中要用到。 extern USBD_HandleTypeDef hUsbDeviceFS; ...
接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备符是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。如果为0则只有在操作系统启动后才能识别并使用您的HID设备)。
2、数据包:分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是 DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式...
数据包是用来传输数据的,在USB1.1中,只有两种数据包:DATA0和DATA1,在USB2.0中又新增了DATA2包和MDATA包,主要用在高速分裂事务和高速高带宽同步传输中。 如上图,数据包都具有同样的结构,之所以有不同类型的数据包,是用在当握手包出错时纠错。 下面以DATA0和DATA1包的切换进行具体的解释: ...
1、USB的HID通信协议3 数据字段在USB包中,数据字段是用来携带主机与设备之间要传递的信息,其内容和长度根据包标 识符、传输类型的不同而各不相同。并非所有的USB包都必须有数据字段,例如握手包、专用包和SOF令牌包就没有数据字段。在USB包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线...
2、数据包:分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是 DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式...