上图是在ch582 HostU2Enum基础上参考CH559EVT修改而来的代码;由于CtrlGetU2HIDDeviceReport有SetIdeal操作,所以就直接调用了,我们的设备有三个接口
/********************************************************************* * @fn CtrlGetU2HIDDeviceReport * * @brief 获取HID设备报表描述符,返回在TxBuffer中 * * @param none * * @return 错误码 */ uint8_t CtrlGetU2HIDDeviceReport(uint8_t infc) { uint8_t s; uint8_t len; CopyU2SetupReqPkg((uint8_t *)SetupSetU2HIDIdle); pU2SetupReq->wIndex = infc; s = U2HostCtrlTransfer(U2Com_Buffer, &len); // 执行控制传输 if(s != ERR_SUCCESS) { return (s); } CopyU2SetupReqPkg((uint8_t *)SetupGetU2HIDDevReport); pU2SetupReq->wIndex = infc; s = U2HostCtrlTransfer(U2Com_Buffer, &len); // 执行控制传输 if(s != ERR_SUCCESS) { return (s); } return (ERR_SUCCESS); }
调用CtrlGetU2HIDDeviceReport获取接口0和接口1的报告描述符正常,但接口2的描述符不正常,如下图
出现0x2E,
#define ERR_USB_TRANSFER 0x20 /* NAK/STALL等更多错误码在0x20~0x2F */
所以想请假如何解决这个问题
另外我们usbhid描述符情况如下附件,是一个三个接口的hid类复合设备
热门产品 :
CH394: 以太网协议栈芯片