ch569 usb3.0通讯中主机收到STALL

如题,在CH569长时间通讯过程中主机会收到STALL故障造成通讯中断,现在发现只有复位才能恢复。

请问:

1、在程序里有没有办法规避出现STALL故障?

2、出现STALL后,软件有什么方法可以恢复通讯?

补充说明:CH569作为从机,采用BULK传输


通常是控制传输,设备可以应答STALL状态,当然非0端点也具备应答STALL的能力。

首先应当定位,设备是对哪个传输应答了STALL, 如果是控制传输,根据主机下发请求,在请求处理函数中添加相应代码处理。若相关处理代码不存在,默认应答STALL。


你好,STALL是端点1接收数据过程中出现的,是BULK传输。


要想让非0端点应答STALL,这个的代码实现应该是很明显的可以发现的。

所以排除代码确实写成这样之外,可以描述一下是如何判断这个问题是因为stall引起的,USB3.0传输错误的定位,没有硬件工具的情况下实际还是比较困难的。避免是你的理解错误



上位机给569的端点1发数据,569通过OUT中断连续读取数据。通讯中断时,上位机代码返回的故障码是STALL。

569中断处理的部分代码如下:

image.png


image.png


返回异常前,程序是否有执行USB30_StandardReq或者USB30_NonStandardReq?

USB30_OUT_Status返回的nump值是否变为0,指示包发送完成?

电脑显示的错误并不一定真的是stall。


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