描述符长度这里会返回错误,代码是从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 ); }
热门产品 :
CH32X035: 32位USB+USB PD单片机