找回密码
 立即注册
查看: 359|回复: 5

【求助】STC32G12K128 IRC频率无法锁定24M,盲扫发现在33M和6M之间跳变,ISP修剪失效

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-02-11 09:24:13
已绑定手机

1

主题

2

回帖

10

积分

新手上路

积分
10
发表于 2026-2-11 09:24:13 | 显示全部楼层 |阅读模式
一、 硬件环境
  • 芯片型号: STC32G12K128 ( LQFP64 )
  • 供电电压: 5V
  • 复位电路: P5.4 (Pin 18/14) 已接 1kΩ 上拉电阻到 5V(已关闭低电平复位功能)。
  • UCAP电路: Pin 17 接了 100nF + 1uF 电容到地(实测空闲电压 4.56V,已知这是 USB LDO 关闭时的正常现象)。
  • 下载工具: STC-ISP V6.9x + 官方 USB转TTL 工具。

二、 软件环境
  • 开发环境: Keil C251
  • 编译模式 (关键): 已设置为 Source Mode + XSmall: near vars, far const, ptr-4 + Code Rom: Huge(已排除指针溢出导致的乱码问题)。
  • 测试代码: 自写的“频率盲扫程序” (使用 Timer1 做波特率发生器,115200bps,轮询测试不同频率基准)。

三、 故障现象描述我在 STC-ISP 软件中,明确将 “IRC频率选择”“用户程序运行时的频率” 都手动输入并锁定为 24.000MHz。显示下载成功。
但是,烧录后运行“频率盲扫程序”,发现以下异常:
  • 频率未锁定 24M: 程序在按 24MHz 计算波特率时,输出全是乱码。
  • 实际跑在 33M (出厂默认?): 当程序切换到按 33.1776MHz (IRC默认值) 计算波特率时,串口助手能收到清晰稳定的文字。
  • 偶发跳变至 6M: 在反复开关串口助手或复位瞬间,芯片有时会跑在 6.000MHz (似乎是 24M 的 4分频?),此时按 6M 计算波特率文字清晰。

四、 我的疑问我已经尝试在代码初始化中加入了 WTST = 0; CLKDIV = 0; P_SW2 |= 0x80; 的暴力锁定代码,但似乎芯片内部的 IRC 并没有被 STC-ISP 正确修剪到 24MHz,而是始终运行在出厂的 33M 附近,或者在受干扰时变成 6M。
请问:
  • 为何 STC-ISP 显示调节频率成功,但芯片实际运行频率依然是 33M?是哪里操作不对吗?
  • STC32G 是否存在某种机制,在 ISP 握手失败或复位异常时,会自动回退到 33M 或 6M?
  • 如何强制将 IRC 永久固化在 24MHz? 有没有大哥帮帮我


ccfe7645d701f73b793431f3a4048a03.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-02-11 09:24:13
已绑定手机

1

主题

2

回帖

10

积分

新手上路

积分
10
发表于 2026-2-11 09:31:54 | 显示全部楼层

求助】STC32G12K128 IRC频率无法锁定24M,盲扫发现在33M和6M之间跳变,ISP修剪失效?

一、 硬件环境
  • 芯片型号: STC32G12K128 (LQFP64 )
  • 供电电压: 5V
  • 复位电路: P5.4 (Pin 18/14) 已接 1kΩ 上拉电阻到 5V(已关闭低电平复位功能)。
  • UCAP电路: Pin 17 接了 100nF + 1uF 电容到地(实测空闲电压 4.56V,已知这是 USB LDO 关闭时的正常现象)。
  • 下载工具: STC-ISP V6.9x + 官方 USB转TTL 工具。

二、 软件环境
  • 开发环境: Keil C251
  • 编译模式 (关键): 已设置为 Source Mode + XSmall: near vars, far const, ptr-4 + Code Rom: Huge(已排除指针溢出导致的乱码问题)。
  • 测试代码: 自写的“频率盲扫程序” (使用 Timer1 做波特率发生器,115200bps,轮询测试不同频率基准)。

三、 故障现象描述我在 STC-ISP 软件中,明确将 “IRC频率选择”“用户程序运行时的频率” 都手动输入并锁定为 24.000MHz。显示下载成功。
但是,烧录后运行“频率盲扫程序”,发现以下异常:
  • 频率未锁定 24M: 程序在按 24MHz 计算波特率时,输出全是乱码。
  • 实际跑在 33M (出厂默认?): 当程序切换到按 33.1776MHz (IRC默认值) 计算波特率时,串口助手能收到清晰稳定的文字。
  • 偶发跳变至 6M: 在反复开关串口助手或复位瞬间,芯片有时会跑在 6.000MHz (似乎是 24M 的 4分频?),此时按 6M 计算波特率文字清晰。

四、 我的疑问我已经尝试在代码初始化中加入了 WTST = 0; CLKDIV = 0; P_SW2 |= 0x80; 的暴力锁定代码,但似乎芯片内部的 IRC 并没有被 STC-ISP 正确修剪到 24MHz,而是始终运行在出厂的 33M 附近,或者在受干扰时变成 6M。
请问:
  • 为何 STC-ISP 显示调节频率成功,但芯片实际运行频率依然是 33M?是哪里操作不对吗?
  • STC32G 是否存在某种机制,在 ISP 握手失败或复位异常时,会自动回退到 33M 或 6M?
  • 如何强制将 IRC 永久固化在 24MHz?


ccfe7645d701f73b793431f3a4048a03.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:707
  • 最近打卡:2026-07-20 09:09:10

33

主题

3031

回帖

6980

积分

论坛元老

积分
6980
发表于 2026-2-11 10:06:29 | 显示全部楼层
大概
如果是选择 不调节,使用内部预置的频率 ,,那就不要操作CLK_DIV寄存器。

如果选择 总是动态调节IRC频率  那么最好使用官方的下载器。或者带有晶振的USB转换器。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-02-11 09:24:13
已绑定手机

1

主题

2

回帖

10

积分

新手上路

积分
10
发表于 2026-2-11 11:07:29 | 显示全部楼层
_奶咖君_ 发表于 2026-2-11 10:06
大概
如果是选择 不调节,使用内部预置的频率 ,,那就不要操作CLK_DIV寄存器。

我现在的情况是用官网的一个开发板来测试这个盲发可以在24hmz的频率端显示清晰的文字。然后现在我现在是自己设计了裸片的stc32G12k128他频率一直再跳每次打开串口关闭串口频率就会变成别的,我没有使用外部晶振只使用了内部的晶振。并且我刚刚把板子洗干净还是不行😭😭😭。有一个点就是觉得会不会是UCAp的电容离的有点远在pcb上面有6mm
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:724
  • 最近打卡:2026-07-21 09:03:11
已绑定手机

51

主题

2710

回帖

9433

积分

论坛元老

积分
9433
发表于 2026-2-11 16:40:04 | 显示全部楼层
烧录时ISP软件上的硬件选项里,根据输入的IRC频率参数,芯片会自动调节频率相关的寄存器,达到烧录时设置的IRC频率。
像 CLKDIV 不一定是0了,贸然修改 CLKDIV 有可能导致主频产生变化,如果变化后的主频超过芯片可以正常运行的频率上限,甚至导致芯片无法正常工作。
如果想软件自定义修改IRC频率,建议参考规格书存储器章节的范例程序:
截图202602111634527716.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:155
  • 最近打卡:2026-07-10 18:27:46

28

主题

1300

回帖

4871

积分

超级版主

积分
4871
发表于 2026-2-12 10:53:44 | 显示全部楼层
请问你这里是怎么设置的,好像在两个地方输入了频率

截图202602121052359607.jpg

下载软件中只有一个可以输入频率的地方
截图202602121053163546.jpg
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-7-22 09:17 , Processed in 0.078274 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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