WCH沁恒单片机
直播中

吴湛

9年用户 932经验值
擅长:可编程逻辑
私信 关注
[问答]

CH552模拟键鼠示例程序内,需要限制总长度是什么原因?

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字节的描述符数据,应该如何进行处理?

当主机发来请求后,应该如何来分段传输完整的描述符数据?



回帖(1)

李纪生

2022-6-28 14:31:33
您好,那个7F限制总长度可以不要。上传数据时如果超过端点最大包长需要分包传输完整的数据。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分