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;