找回密码
 立即注册
查看: 218|回复: 9

usb-cdc串口能出现串口号,但是无法打开,是什么原因?

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:178
  • 最近打卡:2026-03-22 02:05:49

25

主题

231

回帖

2059

积分

金牌会员

积分
2059
发表于 2026-1-16 08:35:01 | 显示全部楼层 |阅读模式
stc32g144K使用 stc_usb_cdc_32g.lib 库demo程序,调试助手可以正常打开串口且收发数据正常。

但稍微增加或删除一点代码,就有可能调试助手打不开串口号,但程序其它功能运行正常。
代码改动部分不涉及USB,对程序执行时间也影响很小。唯一变化的就是总代码大小,函数的绝对地址有可能变化。

可以确认的是串口没有重复打开,没有别的软件占用串口,就是MCU程序的原因。
程序不超过64KB。

难道cdc lib对代码的绝对定位地址有要求?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2026-03-21 18:48:59
已绑定手机

104

主题

4193

回帖

9269

积分

荣誉版主

无情的代码机器

积分
9269
发表于 2026-1-16 09:19:11 | 显示全部楼层
主频设置太高了?上传完整工程看看
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:178
  • 最近打卡:2026-03-22 02:05:49

25

主题

231

回帖

2059

积分

金牌会员

积分
2059
发表于 2026-1-16 13:03:34 | 显示全部楼层
erci*** 发表于 2026-1-16 09:19
主频设置太高了?上传完整工程看看

原工程正是您的作品《音乐播放器》,可以正常运行。
我在基础上增加一条命令,测试SD卡读取速度。
时而正常,
有时加几条语句就打不开串口了,
有时删几条语句就打不开串口了。
找不到规律。

修改后不正常的工程如下,请审阅。
testcdc.rar (758.93 KB, 下载次数: 3)

点评

应该还是主频高了导致的,单体之间也有差异,我这颗下这个附件是正常的。 可以尝试降低主频(但是降主频可能导致解码和读卡速度跟不上),或者USB换为串口测试。  详情 回复 发表于 2026-1-16 13:40
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2026-03-21 18:48:59
已绑定手机

104

主题

4193

回帖

9269

积分

荣誉版主

无情的代码机器

积分
9269
发表于 2026-1-16 13:40:25 | 显示全部楼层
hea*** 发表于 2026-1-16 13:03
原工程正是您的作品《音乐播放器》,可以正常运行。
我在基础上增加一条命令,测试SD卡读取速度。
时而正 ...


应该还是主频高了导致的USB还是什么不稳定了,单体之间也有差异,我这颗下这个附件是正常的。
可以尝试降低主频(但是降主频可能导致解码和读卡速度跟不上),或者USB换为串口测试。

三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:178
  • 最近打卡:2026-03-22 02:05:49

25

主题

231

回帖

2059

积分

金牌会员

积分
2059
发表于 2026-1-16 14:00:33 | 显示全部楼层
erci*** 发表于 2026-1-16 13:40
应该还是主频高了导致的USB还是什么不稳定了,单体之间也有差异,我这颗下这个附件是正常的。
可以尝试降 ...

果然与主频有关。
IRC 48MHz时,CPU@102MHz,FPU@204MHz,此时不正常。
IRC改为40MHz,仍不正常。
IRC改为24MHz,CDC 串口正常了。代码其它未动,此时PLL输入是3MHz其实是不符合要求的 。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:178
  • 最近打卡:2026-03-22 02:05:49

25

主题

231

回帖

2059

积分

金牌会员

积分
2059
发表于 2026-1-16 14:10:21 | 显示全部楼层
IRC 48MHz,PLL输出设为最低值312MHz,CPU时钟为PLL/4即78MHz,仍然CDC串口出错。
IRC 48MHz,PLL输出仍为408MHz,CPU时钟设为PLL/8即51MHz,此时CDC串口 正常了。

奇怪的是高主频时程序其它功能都运行正常,只是CDC串口打不开。并且与代码连接地址有关,有些地址可以高速运行。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:178
  • 最近打卡:2026-03-22 02:05:49

25

主题

231

回帖

2059

积分

金牌会员

积分
2059
发表于 2026-1-16 14:17:42 | 显示全部楼层
目前Flash的速度肯定是不能支持50多M以上指令全速运行的,需要指令cache的参与。

此现象是否是极个别flash地址i-cache未能正确生效导致的?当某些代码分配到这种地址就会执行出错。

点评

楼主试下替换这个重新编译有效不  详情 回复 发表于 2026-1-16 16:47
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2026-03-21 18:48:59
已绑定手机

104

主题

4193

回帖

9269

积分

荣誉版主

无情的代码机器

积分
9269
发表于 2026-1-16 16:47:36 | 显示全部楼层
hea*** 发表于 2026-1-16 14:17
目前Flash的速度肯定是不能支持50多M以上指令全速运行的,需要指令cache的参与。

此现象是否是极个别flash ...

楼主试下替换这个重新编译有效不,120M时,WTST可能要改为4
stc_usb_cdc_32g.lib (90.45 KB, 下载次数: 2)
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:178
  • 最近打卡:2026-03-22 02:05:49

25

主题

231

回帖

2059

积分

金牌会员

积分
2059
发表于 2026-1-17 02:28:17 | 显示全部楼层
erci*** 发表于 2026-1-16 16:47
楼主试下替换这个重新编译有效不,120M时,WTST可能要改为4

替换后功能正常了。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:178
  • 最近打卡:2026-03-22 02:05:49

25

主题

231

回帖

2059

积分

金牌会员

积分
2059
发表于 2026-1-17 13:12:51 | 显示全部楼层
按另一个贴的结论,CPU高主频时读写USB寄存器会失败,需加NOP解决。
本贴所述现象是有时行有时不行,与代码的执行地址有关。

推测应该是运行正确时是i-cache未命中,从flash取指令低速运行。
运行错误时是指令已缓存到cache,高速执行指令会出错。

至于为何有时能缓存有时不能缓存,需要更进一步考虑。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-22 03:27 , Processed in 0.130928 second(s), 90 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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