HID设备类特定的命令(请求)有6个,它们分别是Get_Report、Get_Idle、Get_Protocol、Set_Report、Set_Idle和Set_Protocol。 HID类请求(命令)数据包格式如表8所示: 表9、HID类请求(命令)包格式 表10、HID类请求 USB主机在请求HID设备的配置描述符时,设备首先返回的描述符为:配置描述符、接口描述符、HID描述符、端...
接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备符是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。如果为0则只有在操作系统启动后才能识别并使用您的HID设备),bInterfaceProtoco...
四、usb hid类命令(请求) HID设备类特定的命令(请求)有6个,他们分别是Get_Report、 Get_Idle、Get_Protocol、Set_Report、Set_Idle和Set_Protocol。 HID类请求(命令)数据报格式下表所示: 表9、HID 类请求(命令)包格式 偏移量 域 大小 说明 0 bmRequestType 1 HID 设备类请求特性如下: 位7: 0=从USB HOS...
接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备符是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。如果为0则只有在操作系统启动后才能识别并使用您的HID设备)。 USB HID类描...
printf("SETUP HID_SET_IDLE\n"); R16_UEP0_T_LEN1 = 0; R8_UEP0_TX_CTRL1 = UEP_DATA1 | UEP_T_RES_ACK; // 默认数据包是DATA1 return ; } status = 0xFF; // 操作失败 } 修改之后的运行结果:完整代码如下:USB1_KeyboardV2下载作者...
HID设备的描述符除了5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,见百合电子工作室的另一篇文章:USB开发基础--USB命令(请求)和USB描述符)外,还包括3个HID设备类特定描述符:HID描述符、报告描述符、实体描述符。
① Get_Report——主机用控制传输从设备接收数据,所有HID类设备都要支持这个请求; ② Set_Report——设备用控制传输接收主机的数据,设备可以不支持此请求; ③ Get_Idle——主机读取设备当前的空闲速率,设备可以不支持此请求; ④ Set_Idle——设置闲置状态,设备可不支持此请求; ...
SET_ADDRESS 0x05 wValue设备地址(上面提到的0x0002,设备地址一般从地址0开始分配) wIndex 0x0000 wLength 0x0000 具体可以看文档 四.USB HID设备(鼠标)的枚举过程 以上的截图是通过BUS BOUND得到的,不过没有set_address前的枚举过程而已。 (1)取得设备描述符get device descriptor ...
1,USBH_HID_ClassRequest 函数,修改代码(351 行)为: classReqStatus = USBH_Set_Idle (pdev, pphost, 100, 0);//这里 duration 官方设置的是 0,修改为 //100,提高兼容性 2,USBH_Set_Idle 函数,修改代码(542 行)为: phost->Control.setup.b.wLength.w = 100; //官方的这里设置的是 0,...
在HIDUsageTables标准中定义了键盘与鼠标的启动描述符〔BootDescriptor〕。BIOS不需要从设备中读取描述符,由于它知道启动协议,并且假设设备支持启动协议。所以要启动的设备不需要在固件内包含启动接口描述符,它只要在主机尚未要求在报表描述符中的定义协议时支持启动协议即可。在操作系统加载 HlD 驱动程序后会使用Set_Protoc...