【已解决】CH32X035系列是否支持USB设备模式SOF包中断

之前在用CH552系列的时候,设备断连功能是用SOF包超时实现的。但移植到CH32X033上时,发现“USBFS_UIS_TOKEN_SOF”这个case并不会触发,查阅手册也未发现该芯片作USB设备时SOF包中断标志的相关信息。

我想咨询:

1 CH32X035系列是否支持USB设备模式下SOF包的检测?若支持,应该如何配置USB中断?

2 若不支持USB设备模式的SOF包检测,是否还有其他方法判断设备是否与主机失去连接(但VBUS保持有电的情况)?

谢谢!


8月22日更新:该问题已解决,方案是采用SUSPEND中断替代检测SOF包超时来判断失去与主机通信。

你好,CH32X035做USB设备没有检测SOF包的中断,想要检测是否与主机连接,在Vbus有电的情况下,我理解为并不是物理意义的连接断开,而是是否与主机正常通信,这种情况可以通过检测Suspend中断来判断,这种原理与判断SOF超时一样,总线上超过一定时间没有活动,X035的USB设备会进入Suspend中断;

Suspend中断在USB的R8_INT_EN寄存器中配置,如下图:

image.png


是这样的,我在测试一些KVM切换器的时候,有些KVM切换器在切换连接的时候是不会断开VBUS的,这时就会导致USB直接被连到一个完全不同的主机(甚至可能没有在运行)。我在原先的设计上是连续缺少2个SOF即认为连接断开。不知道这种判断方法是否可以应对此种不规范的KVM切换行为。

有些资料写一些其他品牌的MCU在失去几个应该有的SOF之后会进入SUSPEND中断,不知道X035系列是否也是这样的?


X035作为USB设备也是这样的,在与主机断开通信超过3ms后,就会挂起进入Suspend中断


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