关于CH569 USB3库的一个问题

我们用CH569W开发大容量存储设备,有些SCSI命令不支持时,需要返回STALL。这样调用USB30_IN_Set(ENDP_2, DISABLE, STALL, 0, 0);将IN端口设置为STALL,此时主机返回了C0000011错误,并产生RESET,出现掉盘,这与预期不符。设想应该返回USTS c0000004 stall pid错误代码,而且不能RESET。这个是什么原因?怎么调用才能返回STALL而不产生复位?

icon_rar.gifEXAM.zip

用这个例程测试,其中USB函数库已经更新


使用以上EXAM中的库,仍然无法返回上传端点STALL状态。


还是这样调用:USB30_IN_Set(ENDP_2, DISABLE, STALL, 0, 0);


主机端返回了命令超时或C0000011错误


这个CH569的USB3资料有点少啊,不管是芯片手册还是库都没有详细文档,在调试遇到问题时候有点无从下手。有没有详细点的资料啊?


现在用的这个USB3的库版本号读出来是32


上传端点STALL状态设置不成功的问题,把代码中的printf输出全部注释掉就好了(这个原因比较奇怪)。


现在又有新问题,IN端点(ENDP_2)返回STALL成功以后,收到USB_CLEAR_FEATURE,将IN端点(ENDP_2)恢复为ACK状态。不知什么原因主机又返回了C0000011。

1676422564881065.png

1676422564415235.png



希望能够看到USB3处理端点STALL状态的例程参考,谢谢!


收到,预计本周提供包括端点0、非0端点响应stall的示例代码。到时候更新至该帖中:

https://www.wch.cn/bbs/thread-91615-1.html



谢谢!还有一个很奇怪的现象,设备收到USB_SET_FEATURE(00 03 30 00 00 00 00 00),在处理USB_SET_FEATURE的地方稍有延时,就会导致通信卡顿8s左右才恢复正常。这里仅仅只有两条if判断,而且都不符合进入条件。

SETFEATURE.png把这两条if注释掉就没这个现象了。

SETFEATURE2.png试过在这里只有printf输出一点信息,也会导致通信卡顿现象。




@TECH5 "预计本周提供包括端点0、非0端点响应stall的示例代码。"麻烦问一下,这个示例代码有了吗?


您好,留一个邮箱,这边邮件发送给你。

因为是测试代码,不具备完整功能,不便直接贴到帖子里,避免给别人造成误解。感谢。


@TECH5 我的邮箱是这个:个人信息保护,已隐藏,感谢!


邮件已发送,请注意查收。
通常一个stall的处理包含很多步骤。

1、端点传输事务上应答stall状态。

2、可能存在clear feature请求的发生,用于复位端点状态,这取决于主机行为。

3、如果stall行为发生于某一个 类协议 的基础上,可能还需要在后面针对 类协议 进行后续的处理。


单纯的端点应答stall的代码实现:

image.png



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