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

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


您好,那个7F限制总长度可以不要。上传数据时如果超过端点最大包长需要分包传输完整的数据。

image.png


只有登录才能回复,可以选择微信账号登录