我在使用CH554调试AOA和ADB通信时,在USBHostTransact函数中会返回0x16和0x15,发现返回这两个值是因为下面这段函数内容
if ( UIF_DETECT ) // USB设备插拔事件
{
UIF_DETECT = 0; // 清中断标志
s = AnalyzeRootHub( ); // 分析ROOT-HUB状态
if ( s == ERR_USB_CONNECT )
{
FoundNewDev = 1;
}
if ( ThisUsbDev.DeviceStatus == ROOT_DEV_DISCONNECT )
{
return( ERR_USB_DISCON ); // USB设备断开事件
}
if ( ThisUsbDev.DeviceStatus == ROOT_DEV_CONNECTED )
{
return( ERR_USB_CONNECT ); // USB设备连接事件
}
mDelayuS( 200 ); // 等待传输完成
}
即里面的usb设备断开和usb设备连接事件,这会是什么原因呢?应该不是硬件问题,我调整传输函数会发现没事,只有到某一个通信函数时会出现错误?
难道是USB通信过程中出现错误,导致总线复位?
但是USB通信是什么错误呢?如何在进一步分析?谢谢。