上图是在ch582 HostU2Enum基础上参考CH559EVT修改而来的代码;由于CtrlGetU2HIDDeviceReport有Se
tideal操作,所以就直接调用了,我们的设备有三个接口
/*********************************************************************
* @fn CtrlGetU2HIDDeviceReport
*
* @brief 获取HID设备报表描述符,返回在TxBuffer中
*
* @param none
*
* @return 错误码
*/
uint8_t CtrlGetU2HIDDeviceReport(uint8_t i
NFC)
{
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类复合设备
<img alt="icon_rar.gif">
尝试过用抓包软件抓包看看吗,或者用USB分析仪抓包