WCH沁恒单片机
直播中

打马过草原

9年用户 837经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

CH549 USB HOST描述符长度这里会返回错误是为啥?

描述符长度这里会返回错误,代码是从ch554移植过来的,ch554使用正常,到了CH549就不行了,请问为啥?
UINT8 CtrlGetDeviceDescr( void )
{
UINT8 s;
UINT8 len;
UsbDevEndp0Size = DEFAULT_ENDP0_SIZE;
CopySetupReqPkg( SetupGetDevDescr );
s = HostCtrlTransfer( Com_Buffer, (PUINT8)&len ); // 执行控制传输
if ( s != ERR_SUCCESS )
{
return( s );
}
UsbDevEndp0Size = ( (PXUSB_DEV_DESCR)Com_Buffer ) -> bMaxPacketSize0; // 端点0最大包长度,这是简化处理,正常应该先获取前8字节后立即更新UsbDevEndp0Size再继续
if ( len < ( (PUSB_SETUP_REQ)SetupGetDevDescr ) -> wLengthL )
{
printf("SetupGetDevDescr ERR_USB_BUF_OVERnr" );
return( ERR_USB_BUF_OVER ); //////// 在这里返回错误 // 描述符长度错误
}
return( ERR_SUCCESS );
}

回帖(1)

孙婷

2022-6-6 14:20:19
您好,报错的地方比较的是请求的请求的字节长度和接受到的字节长度做对比,可以进入到HOSTCTRLTRANSFER函数内部监控一下在读取USB_RX_LEN寄存器值的时候具体的长度是多少,同时因为报错了,也可以看一下缓冲区中的数据本身是什么,用来判断USB事务执行本身是否是成功的。
举报

更多回帖

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