请问CH552能不能处理两个连续的USB请求?

我在尝试声卡和键盘复合设备时遇到了这个问题。由于同步传输后没有ACK,直接进行下一个中断传输。这时不管端点有没有发送,中断传输就只会NAK了。目前凑合的办法是模拟两个键盘。第一个键盘不处理,永远NAK,为第二个键盘争取处理时间。


这个问题也可以由两个键盘描述符复现。该代码别处不会处理UEPn_T_LEN和UEPn_CTRL。所以此处设了发送就会一直发送。

Screen Shot 2024-05-01 at 9.10.41 AM.png

如果只让EP3发送。EP2 NAK,EP3 ACK,很正常。

Screen Shot 2024-05-01 at 9.13.50 AM.png

但是如果一起发送,就只有EP2能发送,EP3只会NAK了。


根据之前的调试结果。这种情况下中断会在EP3传输时发生。我猜测USB系统在中断未完成时不会响应下一个请求。但是这对于主机不重试的请求就会漏掉。我试图把UIF_TRANSFER移动到中断前面一些的位置,似乎不仅不能解决问题,连枚举都出错了。


请问有没有办法让CH552处理两个连续的USB请求?

进一步测试发现把bUC_INT_BUSY设为0也可以。但是所有的例程里bUC_INT_BUSY都是1。有什么副作用尚不清楚,但是能工作。


在一台win11的电脑上测试,bUC_INT_BUSY设为0后枚举会报错。


您好,连续处理两个请求具体是指什么?可以描述下具体的应用需求,以及提供描述相关的程序参考?

下面提供一份自己实现的audio设备的实现,给您参考下:

icon_rar.gifEXAM-audio.zip



感谢分享,只是我这里没有Keil编译器,所以只能测试HEX代码。

我把CH554DEMO.hex用WCHISPTool烧到CH552上,win11直接报错?

Unknown USB Device (Configuration Descriptor Request Failed)



您好,

程序给错了,请重新下载,另外注意CH554端点最大包长是64字节。


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