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_OVER\n\r" );
        return( ERR_USB_BUF_OVER ); //////// 在这里返回错误                                   // 描述符长度错误
    }
    return( ERR_SUCCESS );
}




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


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