case UIS_TOKEN_SETUP | 0: //SETUP事务 UEP0_CTRL = bUEP_R_TOG | bUEP_T_TOG | UEP_R_RES_ACK | UEP_T_RES_ACK; len = USB_RX_LEN; if(len == (sizeof(USB_SETUP_REQ))) { SetupLen = UsbSetupBuf->wLengthL; if(UsbSetupBuf->wLengthH || SetupLen > 0x7F ) { SetupLen = 0x7F; // 限制总长度 } len = 0; // 默认为成功并且上传0长度 SetupReq = UsbSetupBuf->bRequest; if ( ( UsbSetupBuf->bRequestType & USB_REQ_TYP_MASK ) != USB_REQ_TYP_STANDARD )/* HID类命令 */ {}
此处进行描述符传输时 ,示例代码进行了长度的限制,保证返回的数据长度小于128字节。
请问为什么需要这样处理?对于部分键鼠设备,有超过128字节,甚至超过256字节的描述符数据,应该如何进行处理?
当主机发来请求后,应该如何来分段传输完整的描述符数据?
热门产品 :
CH32L103: 32位PDUSB低功耗单片机