ch582f芯片用2号的usb作为host出现问题

ch582f芯片用2号的usb作为host出现问题,具体是进行一次批量事务后,从寄存器R8_USB2_RX_LEN获取到的长度居然大于64,我在测试的时候发现偶发性获取到162大小,这不符合常理呀,咋回事。代码如下:


 s = USB2HostTransact( USB_PID_IN << 4 | endp_pid & 0x7F,

                (*tog_V) & 0x80 ?

                RB_UH_R_TOG | RB_UH_T_TOG :

                                  0, timeout);

  

        if (s == ERR_SUCCESS) {

            (*tog_V) ^= 0x80; // 同步标志翻转


            if(R8_USB2_RX_LEN>64)//这边会获取到超过64长度的值,按道理不应该呀

            {

                return -1;

            }

            return R8_USB2_RX_LEN;


你好,建议多测试几次,同时使用USB分析仪进行抓包查看。需要判断是否设备发送的数据长度超过64B,理论上一包的数据量是不会超过USB协议规定的。


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