找回密码
 立即注册
查看: 508|回复: 8

CDC不知如何侦测到主机重启然后重新初始化,请老师赐教|已解决

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

积分
223
发表于 2024-5-21 08:56:11 | 显示全部楼层 |阅读模式
本帖最后由 STCAI-32位8051 于 2024-5-23 14:27 编辑

最近发现我的CDC转换模块的一个问题,在USB连接线同主机USB口连接状态下机器重新启动,此时主机设备管理器能看到CDC串口,串口助手也能看到但不能工作,
打开关闭串口照旧操作,发送数据时出现串口问题然后进行“修复”。我怀疑是下位我的CDC模块没有反应,需要重新初始化。然后我拔下USB线(CDC模块断电)

再插入,恢复正常。我希望的USB线缆长期连接USB口,机器重启能够直接使用CDC模块,如何解决请诸位大神、大佬、老师帮忙
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:57
  • 最近打卡:2025-05-04 08:52:05

718

主题

1万

回帖

1万

积分

管理员

积分
15654
发表于 2024-5-21 09:09:31 | 显示全部楼层
MCU 型号,原理图的 PDF 发上来,
用的哪个USB库,
再来个实际的视频,大家帮分析
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

积分
223
发表于 2024-5-21 09:25:15 | 显示全部楼层
本帖最后由 55337575 于 2024-5-21 09:35 编辑

型号是32G12K128,这个应该同原理无关吧。主机开机(win10)系统运行后,模块插USB线缆上电,CDC串口正常。USB线缆不拔,重启主机,然后运行串口助手,打开/关闭串口正常,点发送出现:

串口号故障!自动修复中...
关闭串口...
打开串口...

串口号故障!自动修复中...
关闭串口...
打开串口...


观察系统的设备管理,确实有相应的cdc串口,而串口助手也能看到这个串口。然后直接重现插拔一下USB线缆,也就是重新给模块上电(初始化cdc),所有运行正常
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2024-5-21 09:38:06 | 显示全部楼层
在USB初始化前清除一下USB寄存器,可以避免异常复位导致USB通信不正常,可以参考这个帖子:
加入CDC串口后执行“IAP_CONTR = 0x20 ”语句就死机了 |已解决
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2459
(出处: 国芯技术交流网站)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

积分
223
发表于 2024-5-21 10:12:57 | 显示全部楼层
本帖最后由 55337575 于 2024-5-21 10:14 编辑
乘风*** 发表于 2024-5-21 09:38
在USB初始化前清除一下USB寄存器,可以避免异常复位导致USB通信不正常,可以参考这个帖子:
加入CDC串口后 ...

这个帖子我看了,这个操作不适合我的模块。我现在需要能看到主机重新启动了,而后我再像该贴说的执行IAP_CONTR = 0x20,现在是我的模块怎么知道主机启动,检测到cdc串口。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2024-5-21 10:24:39 | 显示全部楼层
本帖最后由 乘风飞扬 于 2024-5-21 10:27 编辑
5533*** 发表于 2024-5-21 10:12
这个帖子我看了,这个操作不适合我的模块。我现在需要能看到主机重新启动了,而后我再像该贴说的执行IAP_C ...
执行IAP_CONTR = 0x20进行手动重启时需要增加USB配置清除代码,被动重启也需要增加USB配置清除代码。
你要参考的是如何处理重启导致的USB通信不正常问题。如果重启能触发芯片复位的话就会执行初始化代码,在初始化配置里面增加USB配置清除代码就可以测试是否有效果。
如果主机重启不会导致MCU复位的话可以参考下面这个帖子:

关于STC8H8K64U的USB主动挂起
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5031
(出处: 国芯技术交流网站)


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

积分
223
发表于 2024-5-21 10:37:52 | 显示全部楼层
本帖最后由 55337575 于 2024-5-21 11:19 编辑

乘风*** 发表于 2024-5-21 10:24
执行IAP_CONTR = 0x20进行手动重启时需要增加USB配置清除代码,被动重启也需要增加USB配置清除代码。
你要 ...



谢谢你的这个链接,应该是被挂起了,正在学习中。。。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

积分
223
发表于 2024-5-23 11:10:59 | 显示全部楼层
找到原因了,但不知道怎么利用消息解决。
主要原因是:我的程序启动后-初始化-完成后就不断向cdc口送数据,这样在正常插拔时,上位机USB已经准备好,插入线缆,模块上电运行后经过初始化-送数据,上位机正常接收。
而带线缆开机或重新启动上位机,此时模块上电快,送数据时cdc还没有准备好,出现端口阻塞。我增加了一个开关,模块上电不送数据,等待cdc指令打开开关再送就没问题。现在不知道有没有更好的办法,请各位大侠指导
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

积分
223
发表于 2024-5-23 13:29:05 | 显示全部楼层
本帖最后由 55337575 于 2024-5-23 13:33 编辑

该问题已经解决。感谢  乘风***  解决办法我另开新帖
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 09:52 , Processed in 0.126213 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表