CH32V307 USBHS复合设备中CDC可以枚举,但无法正常使用

芯片具体型号为CH32V307WCU6。

我枚举了两个设备,一个U盘,一个CDC,均参考的是EVT里的例程。

U盘使用的是端点2和3,功能正常没有问题。

CDC使用的端点4中断传输,端点5批量输入和输出。


目前的情况是PC上(WIN11)设备管理器能够枚举出COM口,且没有提示有问题。但使用SSCOM5发数据会显示:

串口号故障!自动修复中...

关闭串口...

打开串口...


有一个很在意但我无法解决的现象,Debug的时候USBHS的中断里。TOKEN事务,端点0的波特率设置能够正常触发,U盘的2,3端点也能正常触发,但CDC使用的端点4IN和5IN,5OUT从来没有被触发过。


请问下这个情况应该如何解决,谢谢!


您好,根据您的描述,CDC设备枚举是成功的,收发数据异常的原因建议排查如下:

1、CH32V307设备,端点描述符中的批量传输端点描述及其初始化是否正确,以例程中为例为以下几处;

image.png

image.png


2、USB中断中是否有添加对于批量端点IN事务或OUT事务的处理;

image.pngimage.png

image.png


3、设备在枚举成功后,尝试通过批量端点上传数据,用抓包工具抓取USB总线上的数据,再具体分析异常原因;


排查建议的1和2已经多次确认过,因该问题不大。

我用抓包工具看过了,用手上的WHC_LINKE串口做为对比,观察到确实是TOKEN事务没进中断。

会不会和freertos有关,如果我不启动任务调度器的话,USB设备就无法被识别。启动了U盘就能正常使用。

看来和OS无关,我重建了个工程,现象是一样的。



您好,TOKEN事务的判断在传输完成中断下,检查一下传输完成中断在USB初始化时是否成功使能呢?

image.png

image.png

后续可将问题现象的具体描述邮箱联系至liuy@wch.cn


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