调试CH554主机通信时会莫名奇妙出现断开和连接事件

我在使用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通信是什么错误呢?如何在进一步分析?谢谢。

需要对总线进行抓包,可以使用带协议解析的逻辑分析仪或者专用的USB总线分析仪。


昨晚又测了一下,应该是host发送adb命令时,手机没有正确接收,或者说host发送的不对,导致手机主动断开usb,导致总线复位。设备总线的复位,导致上位机aoa软件读写错误。下一步重点研究ADB命令和主机aoa软件对错误的处理。看看能不能调通。


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