MCU重启时,在EVT标准例程里面增加那些启动操作,会避免无法打开CDC设备。

CH32V208W USBD/SimulateCDC EVT原程序。

工作正常,但是SSCOM5.13.1打开该CDC虚拟串口时MCU重启,就无法打开该设备了。

其余串口软件也无法打开。设备浏览器可见。

因应用场景所限,设备会比较频繁reset。

想问在USB重启时,在EVT标准例程里面增加那些启动操作,会避免这一现象。

谢谢!

你好,MCU复位之后,USB这个功能也会复位,软件没有办法控制,USB功能复位后,电脑的设备树中会先删除这个设备,然后重新枚举。

在打开串口前复位,由于SSCOM5.13.1没有实时更新串口设备,如果在设备还没有完成下次枚举的时候点击打开串口,会无法打开,原因是设备已经没了,我们的调试助手会实时更新,复位的时候可以看到,串口列表会有一个刷新的过程。

在打开串口后,USB复位的话,SSCOM5.13.1会直接重连串口,可以继续通信,我们的调试助手没有重连,需要关闭串口再重新打开一次。

想要解决这个问题,可以在上位机软件上处理,打开失败后,重发这个命令,或者手速快点手动重新打开串口。


感谢回复!

实际上有些细节我没说清楚:

如果SSCOM关闭该串口MCU进行复位,USB自举复位完成后,再打开该串口是没问题的(期间SSCOM无须重启)。

如果SSCOM打开该串口MCU进行复位,USB自举复位完成后,关闭SSCOM,用任何串口软件都无法打开了。

也就是连接状态的设备重启,自举之后轮番使用任何软件都无法打开该串口了。

CH340是没有这种情况的,我有个带供电控制的CH340模块,重新上电,丝滑配合软件。


你好,这个现象似乎并不合理,检查一下是否是因为MCU一直在复位,或是并没有真正关闭串口,被软件占用,或者是有两个同名的串口号,打开的是一个假的串口,等等,如果仍然找不到原因,可以将测试代码、上位机软件和详细的复现方法,发我邮箱zc@wch.cn


确实,不符合逻辑。

相当于复位,自举前的操作影响了复位后的PC行为。软件关闭掉或者仅仅关闭掉串口链接。MCU再次复位,就能链接了,COM号不变。

MCU复位,printf会有反复打印的,确定没有反复重启。软件占用不存在,我确定,因为原软件关闭后重启就没问题了。

假串口确实在我的认知以外,我只知道设备管理器能看见这个端口号的设备,就是打不开。


就是贵网站提供的CH32V208W的EVT USB里面的 USBD/SimulateCDC EVT原程序。没改动过。上位机就是SSCOM5.13.1。

复现提过了:如果SSCOM打开该串口MCU进行复位,USB自举复位完成后,关闭SSCOM,用任何串口软件都无法打开了。





还补充下,应该是在USB自举过程中,SSCOM没有关闭这个COM口,仍是打开状态就会这样。

我就是官方CH32V208开发板加EVT程序测得。

一开始是自己的东西出问题。

就回到最原始的原装货,也是这样了。


你好,无法复现,可以加我微信详细沟通 18168351137


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