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

关于8H8K64U单片机内置RTC的启动会绕过X32KCR寄存器开启外部32.768K晶振的问题

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-2-24 15:44:31 | 显示全部楼层 |阅读模式

关于题目中所说的有个疑问,

1手册中描述的说在使用单片机内置的RTC时配置RTC使用的外部时钟源时需要先启动外部32K晶振,

image.png

那么如果我没有启动外部32K晶振,RTC是否还能工作?

参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-2-24 16:03:28 | 显示全部楼层
没时钟,当然不工作
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-2-24 16:04:39 | 显示全部楼层
Debu*** 发表于 2025-2-24 16:03
没时钟,当然不工作

你确定?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-2-24 18:31:29 | 显示全部楼层
我测试了一下,没有启动外部晶振的情况下,RTC运行会卡死.
具体卡死的语句是 while(RTCCFG & 0x01);    //等待初始化完成
所以没有启动外部32K晶振的情况下,RTC是不能正常工作的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-2-25 08:38:46 | 显示全部楼层
王*** 发表于 2025-2-24 18:31
我测试了一下,没有启动外部晶振的情况下,RTC运行会卡死.
具体卡死的语句是 while(RTCCFG & 0x01);    // ...

外置晶振也是存在的吗?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-2-25 08:57:47 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=147760&ptid=15246][color=#999999]王昱顺 发表于 2025-2-24 18:31[/color][/url][/size] 我测试了一下,没有启动外部晶振的情况下,RTC运行会卡死. 具体卡死的语句是 while(RTCCFG & 0x01); // ...[/quote]

可以尝试运行一下这个程序么?upload 附件:8hrtc.zip

程序基础是ISP软件上的8H的范例程序,仅修改了IO的工作模式,,,神TM的原例程把晶振用到的引脚配置成了准双向,,

image.png

这个是输出的运行结果,,很奇特。。。外置晶振控制器在没有使能的情况下,RTC正常运行了。我一开始的理解和楼上Debug哥的想法是一致的,没有时钟应该是不工作的。但现在的情况和预期的不一样,再开启RTC之前X32KCR寄存器读取的值都为0(把RTC配置函数注释掉也是如此),开启了RTC并且初始化完成之后X32KCR的晶振稳定标志位却置1了。和你的实验情况也不一样。。

我这里用的是STC8H8K64U D版单片机 固件版本7.4.8U。下载的信息如下。

image.png

晶振使用的是12.5pF的32.768KHz 圆柱型3*8的晶振,具体是是哪个厂家的就不知道了。

点评

我测试了一下,确实如果你所说,8H单片机上会出现这个直接开启RTC就能用的情况。 应该是单片机内部设计上,开启RTC后,去帮忙初始化了这个外部32K时钟。 我之前是在AI8051U上测试的RTC程序,不初始化外部32K时钟的时  详情 回复 发表于 2025-2-25 12:26
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:204
  • 最近打卡:2025-04-02 13:56:58

19

主题

37

回帖

236

积分

中级会员

积分
236
发表于 2025-2-25 10:21:36 | 显示全部楼层
我记得手册上有配置步骤
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-2-25 10:24:20 | 显示全部楼层
小白*** 发表于 2025-2-25 10:21
我记得手册上有配置步骤

现在是遇到了一点儿,有冲突的地方,,
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-2-25 12:26:37 | 显示全部楼层
_奶*** 发表于 2025-2-25 08:57
可以尝试运行一下这个程序么? 附件:8hrtc.zip
程序基础是ISP软件上的8H的范例程序,仅修改了IO的工作模 ...

我测试了一下,确实如果你所说,8H单片机上会出现这个直接开启RTC就能用的情况。
应该是单片机内部设计上,开启RTC后,去帮忙初始化了这个外部32K时钟。
我之前是在AI8051U上测试的RTC程序,不初始化外部32K时钟的时候确实会卡死。
所以应该是设计上的不同,为了保险起见,还是要手动做一下开启外部时钟的操作。
截图202502251227107144.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-2-25 14:23:19 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=147905&ptid=15246][color=#999999]王昱顺 发表于 2025-2-25 12:26[/color][/url][/size] 我测试了一下,确实如果你所说,8H单片机上会出现这个直接开启RTC就能用的情况。 应该是单片机内部设计上 ...[/quote]

那我觉得既然是设计上的如此,那么是不是最好在手册上 也说明一下。

还有就是ISP软件范例程序上 《AI8H 系列 - 串口打印RTC时钟范例 - C》 中加入外部晶振使能的操作。正是这里没有使能外部晶振才有了这个帖子。。
以及范例中对所有的IO均设置为准双向的操作是否正确(我这里测试如果按照范例原样下载RTC是不会运行的,然后我把1.6 1.7设置为高阻模式之后RTC跑起来了)。

image.png

最后发散了一下思维,先说结论,内置的RTC选择外部晶振作为时钟源时能否工作起来,其实并不在于使能的是外部高速晶振还是低速晶振。

我把32K晶振换了一个22.1184MHz的晶振上去。程序中使能外部振荡器控制寄存器(XOSCCR),然后主时钟依然选择内部高速IRC。这样的配置下开启RTC,原想既然RTC只能配置外部的低速晶振作为时钟源(不能用外部高速晶振作为时钟源),那么RTC应该是不能工作的吧,但是测试结果是,RTC依旧跑起来了,而且是按照22.1184M 的速度跑起来了。猜想RTC把外部高速时钟作为32K时钟了,这。。。。。顺手再原有的秒中断中加入一个计数变量,设置变量加到675次之后再将标志位置1。

image.png

AUV,您猜怎么着儿。输出的频率又便成了1秒一次。不过可以看的出RTC的时间寄存器们在疯狂上涨,毕竟现实的1秒等于了RTC的11分钟零15秒。。

image.png

回头又看了看手册上的时钟树,,,是不是这里就可以连起来了。。哈哈哈哈(bushi

image.png

参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 08:55 , Processed in 0.431841 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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