数码之家

标题: 为什么大多数人都不喜欢使用STM32内置的RTC? [打印本页]

作者: lmn2005    时间: 2023-5-14 09:10
标题: 为什么大多数人都不喜欢使用STM32内置的RTC?
用STM32制作而成的电子钟,大多数人都不喜欢使用STM32内置的RTC,而是使用外置的RTC芯片来作为时基信号,这是为什么?
是不是STM32内置的RTC模块难以配置和操作?还是它的准确性有问题,还是别的问题?请大神们各抒己见。


作者: 深寒刺骨    时间: 2023-5-14 09:30
应该是不准确,难校准,不利于批量生产。
作者: bboroo    时间: 2023-5-14 09:43
我没用过,不过估计多数是因为精度问题吧。
作者: liuhaob    时间: 2023-5-14 10:57
精度不行
作者: qq1329491328    时间: 2023-5-14 11:35
我不用的原因是不准,定时器比他准多了
作者: inthsunshine    时间: 2023-5-14 12:42
内置rc振荡,精度温漂肯定差些
作者: mmxx2015    时间: 2023-5-14 15:11
一般RTC使用外部32768晶振提供时钟信号,STM32 RTC的精度问题不赖STM32本身,所有使用外部晶振的RTC都一样,精度主要由晶振本身和所接的匹配电容决定,建议匹配电容使用低温漂的COG(NPO)材质电容。

要这种RTC时间准,需要校准,STM32 RTC校准机制我不清楚,以使用过的华大(小华)HC32L136来说,可以设置外部32768晶振提供主时钟,从特定引脚输出主时钟信号,不分频,测量输出信号的实际频率,根据实际测量值设置补偿参数,用这种方法一次补偿后大概可以做到每月偏差3秒左右。如果是个人DIY,可以运行一段时间,如一周、一个月,看看实际偏差有多少,根据这段时间的偏差再修正一个补偿值,这样处理后精度可以做到每月偏差1秒左右。



作者: 触景情伤    时间: 2023-5-14 16:53
手表用的是stm32L系列的,不连接蓝牙校时一年的误差也不到1分钟不知道他们怎么做到的…没有时钟模块哈…
作者: kpj001    时间: 2023-5-14 17:05
先不说精度。掉电继续走时,这个是时钟的基本要求,内置的有?
作者: mmxx2015    时间: 2023-5-14 17:15
kpj001 发表于 2023-5-14 17:05
先不说精度。掉电继续走时,这个是时钟的基本要求,内置的有?


有啊,STM32的RTC有电池脚,要接电池的。
作者: lmn2005    时间: 2023-5-14 17:39
kpj001 发表于 2023-5-14 17:05
先不说精度。掉电继续走时,这个是时钟的基本要求,内置的有?

使其掉电下继续走时,我到目前还不清楚如何操作。
https://www.mydigit.cn/thread-374462-1-1.html
作者: lmn2005    时间: 2023-5-14 17:40
kpj001 发表于 2023-5-14 17:05
先不说精度。掉电继续走时,这个是时钟的基本要求,内置的有?

1脚VBAT接电池,就能保证掉电时继续走时。
作者: mmxx2015    时间: 2023-5-14 17:48
lmn2005 发表于 2023-5-14 17:39
使其掉电下继续走时,我到目前还不清楚如何操作。
https://www.mydigit.cn/thread-374462-1-1.html ...

掉电不需要做任何处理,只是主电源上电时要检测一下RTC是否已初始化,为未初始化则初始化,然后写入一个已初始化标志,已初始化则跳过。
作者: kpj001    时间: 2023-5-14 18:20
lmn2005 发表于 2023-5-14 17:40
1脚VBAT接电池,就能保证掉电时继续走时。

这样的话那其实的可以用内置,只要保证每隔一段时间校准一次,但是校准也是个事,不如esp8266 wifi来得实惠
作者: msvcp60    时间: 2023-5-14 18:27
内置精确度不行吧,103系列外部32.768k晶振还经常出问题,据说挑晶振。而DS1302这样的精度也不怎么样
作者: bg4rff    时间: 2023-5-14 21:49
用外置SD2078、SD3078的路过
作者: rose    时间: 2023-5-14 21:55
喜欢就用,应该没多少讲究
作者: inthsunshine    时间: 2023-5-14 22:05
msvcp60 发表于 2023-5-14 18:27
内置精确度不行吧,103系列外部32.768k晶振还经常出问题,据说挑晶振。而DS1302这样的精度也不怎么样 ...

RX-8025T可以,温补的
作者: gy9319    时间: 2023-5-15 08:16
应该是准确性有问题
作者: 慕名而来    时间: 2023-5-15 09:01
inthsunshine 发表于 2023-5-14 22:05
RX-8025T可以,温补的

我曾经用RX8025T为STC8H内部RTC提供外部时钟,精度没问题了,但后来又改回了对8025T直接I2C操作了,因为我发现使用内部RTC也不比使用外部的省事,如果无需外部晶振的话、用内RTC是最方便的,如果需要使用外部晶振的话、我觉得加一个8025T或许更实用些。
作者: ckvlhf    时间: 2023-5-15 09:05
inthsunshine 发表于 2023-5-14 12:42
内置rc振荡,精度温漂肯定差些

stm32可以外接32.768kHz晶振。
作者: inthsunshine    时间: 2023-5-15 09:32
慕名而来 发表于 2023-5-15 09:01
我曾经用RX8025T为STC8H内部RTC提供外部时钟,精度没问题了,但后来又改回了对8025T直接I2C操作了,因为我 ...

我曾经在淘宝上买了10几个R8025SA,拆机的,才5毛一个,都怪当初没看仔细,8025后缀有SA, T之分,T的才有温补,SA没有,买错了
作者: wwb2002    时间: 2023-5-15 14:46
我2个核心板和一个f303探索板都带rtc晶振,用的好好的,现成的为什么不用?
作者: 慕名而来    时间: 2023-5-15 22:30
inthsunshine 发表于 2023-5-15 09:32
我曾经在淘宝上买了10几个R8025SA,拆机的,才5毛一个,都怪当初没看仔细,8025后缀有SA, T之分,T的才有温 ...

我们的经历是一样的,先是拍了10个SA的,后来又重新拍了10个T的,SA的直接吃灰了。
作者: superlag    时间: 2023-5-18 08:31
做时钟类的应用,必须得上晶振。内置的RTC精度和一致性都差强人意,这个不只是STC一家的问题,都这样。
作者: mmxx2015    时间: 2023-5-18 11:24
superlag 发表于 2023-5-18 08:31
做时钟类的应用,必须得上晶振。内置的RTC精度和一致性都差强人意,这个不只是STC一家的问题,都这样。 ...

你把内部RTC和内部RC搞混了。
作者: superlag    时间: 2023-5-19 06:09
mmxx2015 发表于 2023-5-18 11:24
你把内部RTC和内部RC搞混了。

RTC也得有时基信号输入,时基不稳,RTC就不可能精确。芯片内置的时基源,都不如晶振来得稳定和精确。
作者: 784870801    时间: 2023-5-21 15:38
STM32内置的RTC(实时时钟)是一种非常实用的功能,可以用来提供精确的时钟信息和日期信息。然而,有些人可能不太喜欢使用STM32内置的RTC,这主要有以下几个原因:

    精度不够高:虽然 STM32 内置的 RTC 精度已经很高了,但对于需要更高精度定时的应用场景,比如精密计时、测量等,STM32内置的RTC可能无法满足需求。

    ​缺少时间同步功能:STM32内置的RTC的时间信息是由外部晶振提供的,并不具备自动校正功能。这意味着在长期使用过程中,如果外部晶振频率出现变化,就可能会导致RTC的时间信息和实际时间不同步。为了避免这种情况,需要手动进行校正。

    低功耗模式不支持闹钟模式:STM32内置的RTC在低功耗模式下不能支持闹钟模式。这意味着如果需要使用RTC闹钟功能,就需要保持芯片处于工作状态,会增加功耗、降低电池寿命。

    配置不方便:对于不熟悉 STM32 内置 RTC 的人来说,可能需要花费一定的时间和精力来配置它。而且,如果RTC和其他外围设备进行交互,也可能需要进行一些额外的硬件或软件配置。

尽管 STM32 内置 RTC 存在以上一些问题,但是它仍然是一种非常实用的功能。对于一些需要基本时钟信息、日期信息的应用场景,STM32内置的RTC已经足够使用。所以,在选择是否使用STM32内置RTC时,需要根据具体的应用场景来评估其优缺点,找到最适合自己的解决方案。

作者: STC32位8051    时间: 2023-5-22 08:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: lmn2005    时间: 2023-5-22 11:14
疯狂的兔子来了 发表于 2023-5-22 08:52
STC32G12K128内部RTC时钟低功耗,定时休眠唤醒,内部比较器监测外部电源
===RTC定时唤醒-比较器检测外部电 ...

STC32有没有独立的VBAT?
作者: STC32位8051    时间: 2023-5-22 15:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: STC32位8051    时间: 2023-5-22 15:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: wpll    时间: 2023-5-22 19:42
这个帖子好  可以请求申精了

作者: lmn2005    时间: 2023-5-23 07:54
疯狂的兔子来了 发表于 2023-5-22 15:31
暂时没有哦!

没有VBAT,要使用内部RTC真的有点麻烦。
首先要占用一个IO口在检测是否没有外部供电。
在外部断电的情况下,启用低功耗功能;
外部供电正常的情况下,唤醒一切外设,正常工作。
作者: lmn2005    时间: 2023-5-23 07:56
784870801 发表于 2023-5-21 15:38
STM32内置的RTC(实时时钟)是一种非常实用的功能,可以用来提供精确的时钟信息和日期信息。然而,有些人可 ...

这一段话,有点眼熟。
作者: 上官梦舞    时间: 2023-5-23 22:38
精度问题,还有温度漂移,官方手册你可以多看看。
作者: lemontreenm    时间: 2023-5-24 02:29
STM32要看哪个系列的,STM32F1系列的内置RTC官方数据手册里明确说了有较大的误差,所以在一些要求比较高的情况下肯定要用外部时钟。
STM32G0系列的内置RTC就精度高的多,大多数情况下使用内置的RTC就够用了。
作者: 朱明    时间: 2023-6-8 18:56
以前在其他论坛看到有人讨论,据说是休眠后不能唤醒,对晶振和匹配电容要求很高。
作者: junyee    时间: 2023-6-17 08:47
触景情伤 发表于 2023-5-14 16:53
手表用的是stm32L系列的,不连接蓝牙校时一年的误差也不到1分钟不知道他们怎么做到的…没有时钟模块哈… ...

用高精度低误差的晶振,

或者有可能你这边一年下来物理温度变化正好可以弥补 晶振的误差和温飘~~

作者: zhuls    时间: 2023-6-21 08:54
本帖最后由 zhuls 于 2023-6-21 10:12 编辑
kpj001 发表于 2023-5-14 17:05
先不说精度。掉电继续走时,这个是时钟的基本要求,内置的有?

有,有个VBK的后备电源输入脚(48Pin以上的封装)
作者: zhuls    时间: 2023-6-21 08:55
inthsunshine 发表于 2023-5-14 12:42
内置rc振荡,精度温漂肯定差些

都上RTC了,还用IRC?
作者: zhuls    时间: 2023-6-21 08:57
mmxx2015 发表于 2023-5-14 15:11
一般RTC使用外部32768晶振提供时钟信号,STM32 RTC的精度问题不赖STM32本身,所有使用外部晶振的RTC都一样 ...

基准是从哪来的?自身给自身的振荡测频?能测出误差吗?
作者: inthsunshine    时间: 2023-6-21 11:12
lemontreenm 发表于 2023-5-24 02:29
STM32要看哪个系列的,STM32F1系列的内置RTC官方数据手册里明确说了有较大的误差,所以在一些要求比较高的 ...

G0手册上写的LSI时钟0.6%的精度,不高
作者: mmxx2015    时间: 2023-6-21 11:25
zhuls 发表于 2023-6-21 08:57
基准是从哪来的?自身给自身的振荡测频?能测出误差吗?

当然是用外部设备测量输出信号的偏差再写入校准值。
作者: lemontreenm    时间: 2023-6-21 12:16
inthsunshine 发表于 2023-6-21 11:12
G0手册上写的LSI时钟0.6%的精度,不高

看你用在哪里,如果做时钟肯定精度不够,如果只是用于其他要求不高的地方完全够用了。
作者: inthsunshine    时间: 2023-6-21 14:31
lemontreenm 发表于 2023-6-21 12:16
看你用在哪里,如果做时钟肯定精度不够,如果只是用于其他要求不高的地方完全够用了。 ...

rtc肯定用在时钟阿,还能用在哪
作者: lemontreenm    时间: 2023-6-21 14:39
inthsunshine 发表于 2023-6-21 14:31
rtc肯定用在时钟阿,还能用在哪

貌似休眠之类的节能模式也用到的
作者: zhuls    时间: 2023-6-21 17:09
mmxx2015 发表于 2023-6-21 11:25
当然是用外部设备测量输出信号的偏差再写入校准值。

倒不如用一个温补晶振,32768的也不贵。+-3.8-5ppm,够用吧?3225的体积也不大。
“此款为温补 TCXO KDS 品牌 DSK321STD  贴片晶振 3.2*2.5mm 1.8-5.0V 可用 高精度 +-3.8-5.0ppm 高稳定性 32.768KHZ 时钟信号。 1XZA032768AD19 是你通讯数码产品 导航信号,精准信号需求的理想频率产品。”

[attach]1855189[/attach]

作者: pldjn    时间: 2023-7-13 23:41
主要是晶振精度 不行,而且外部RTC功耗更低。方便使用。
作者: rush    时间: 2023-7-28 09:00
mmxx2015 发表于 2023-5-14 15:11
一般RTC使用外部32768晶振提供时钟信号,STM32 RTC的精度问题不赖STM32本身,所有使用外部晶振的RTC都一样 ...

确实就是你说的问题,但是?npo电容?用个rtc还受理这个罪啊,扯到电容肯定又扯到布线,麻烦死了,直接用rx8025全内置芯片,外围i2c访问解决一切,至于时钟怎么走是他自己的事!
作者: alloystorm    时间: 2023-7-28 10:39
不是单独用途的器件,类似集成的晶体,会被温漂等因素影响精度,加个外面的也没多少钱
作者: mmxx2015    时间: 2023-7-28 11:25
rush 发表于 2023-7-28 09:00
确实就是你说的问题,但是?npo电容?用个rtc还受理这个罪啊,扯到电容肯定又扯到布线,麻烦死了,直接用 ...

如果舍得花这个钱,还不如用温补晶振,X宝也就4块左右。
作者: rush    时间: 2023-7-28 13:48
mmxx2015 发表于 2023-7-28 11:25
如果舍得花这个钱,还不如用温补晶振,X宝也就4块左右。

RX8025T这个货,在某年之前他们没有炒起来,价格是几毛一个的,我几个朋友家里都是100个的库存
作者: eric_yangsen    时间: 2023-7-28 20:46
这是因为早期STM32F1x系列对RTC的晶振匹配电容要求太严格了,晶振容易停振,用着蛋疼
作者: wishriver    时间: 2023-8-31 23:51
superlag 发表于 2023-5-19 06:09
RTC也得有时基信号输入,时基不稳,RTC就不可能精确。芯片内置的时基源,都不如晶振来得稳定和精确。 ...

STM32的内置RTC肯定要链接32768的晶振啊
看清是是RTC(实时时钟)不是RC
作者: wishriver    时间: 2023-8-31 23:53
inthsunshine 发表于 2023-6-21 11:12
G0手册上写的LSI时钟0.6%的精度,不高

人家楼主问的是RTC!!
RTC
RTC
RTC

作者: XinaOvO    时间: 2024-1-7 10:51
kpj001 发表于 2023-5-14 17:05
先不说精度。掉电继续走时,这个是时钟的基本要求,内置的有?

你别说还真有,只不过用的人少,stm32有rtc备份电池的引脚,跟一般时钟模块一样挂个cr2032就行
作者: 595953427@qq    时间: 2024-1-7 15:39
多一个芯片就多收一份回扣
作者: lmn2005    时间: 2024-1-7 15:41
XinaOvO 发表于 2024-1-7 10:51
你别说还真有,只不过用的人少,stm32有rtc备份电池的引脚,跟一般时钟模块一样挂个cr2032就行 ...

这个从省电方面,比起DS3231或DS1307怎样?
作者: lmn2005    时间: 2024-1-7 15:42
595953427@qq 发表于 2024-1-7 15:39
多一个芯片就多收一份回扣

自己玩的,没有回扣的
作者: 595953427@qq    时间: 2024-1-7 15:53
lmn2005 发表于 2024-1-7 15:42
自己玩的,没有回扣的

那就是玩不转,自己玩肯定是要节约成本的,能用内部的RTC就不会用外部的,再说了,RTC的精度取决于外接晶振的精度,跟芯片的关系不大
作者: lmn2005    时间: 2024-1-7 18:29
595953427@qq 发表于 2024-1-7 15:53
那就是玩不转,自己玩肯定是要节约成本的,能用内部的RTC就不会用外部的,再说了,RTC的精度取决于外接晶 ...

是的,就是玩不了,因为卡在问题上,无法解决,所以放弃了
https://www.mydigit.cn/thread-374462-1-1.html
作者: 595953427@qq    时间: 2024-1-7 21:59
lmn2005 发表于 2024-1-7 18:29
是的,就是玩不了,因为卡在问题上,无法解决,所以放弃了
https://www.mydigit.cn/thread-374462-1-1.htm ...

那是你不会用
作者: lmn2005    时间: 2024-1-8 07:55
595953427@qq 发表于 2024-1-7 21:59
那是你不会用

是的,是我不会用,你能帮我吗?
作者: 595953427@qq    时间: 2024-1-8 09:47
lmn2005 发表于 2024-1-8 07:55
是的,是我不会用,你能帮我吗?

我可以提供有偿帮助,建议你还是自己多摸索,多尝试不同的方式
作者: 595953427@qq    时间: 2024-1-8 14:21
今天专门测试了一下STM32F103的RTC,这个芯片可能是出的太久了,当前的RTC确实不太好用,虽然不好用,但是可以用的,只是麻烦一点,不如近几年出的新型号的RTC好用。
[attach]2014485[/attach]
作者: lmn2005    时间: 2024-1-8 14:45
595953427@qq 发表于 2024-1-8 14:21
今天专门测试了一下STM32F103的RTC,这个芯片可能是出的太久了,当前的RTC确实不太好用,虽然不好用,但是 ...

用HAL库的吗?
作者: 595953427@qq    时间: 2024-1-8 17:19
lmn2005 发表于 2024-1-8 14:45
用HAL库的吗?

标准外设固件库,硬件是一样,用什么库都可以,只不过HAL太绕了,对STM32那孱弱的性能来说是非常大的负担。
STM32F103的RTC比较简单,寄存器也不多。
作者: lmn2005    时间: 2024-1-8 17:59
595953427@qq 发表于 2024-1-8 17:19
标准外设固件库,硬件是一样,用什么库都可以,只不过HAL太绕了,对STM32那孱弱的性能来说是非常大的负担 ...

我是用STM32CubeMX生成 (HAL库)初始代码的。
作者: 595953427@qq    时间: 2024-1-8 18:10
lmn2005 发表于 2024-1-8 17:59
我是用STM32CubeMX生成 (HAL库)初始代码的。

hal库比标准外设库更简单
作者: lmn2005    时间: 2024-1-8 18:55
595953427@qq 发表于 2024-1-8 18:10
hal库比标准外设库更简单

刚入门就得从简单的入手。
作者: zhangxy5277    时间: 2024-1-8 21:11
配合外部的32768 做个10,20 ppm 还是可以的,只是很多人不晓得如何快速去测量这个到底准不准
作者: eric_yangsen    时间: 2024-1-8 23:17
msvcp60 发表于 2023-5-14 18:27
内置精确度不行吧,103系列外部32.768k晶振还经常出问题,据说挑晶振。而DS1302这样的精度也不怎么样 ...

不是据说,至少14年之前的103有这个问题,挑晶振,动不动就停给你看.精度问题只要晶振能跑都能想到解决办法,偷停就要了亲命了
作者: t3486784401    时间: 2024-1-9 03:01
早期的 f103 系列出现过挑晶振的问题,直观表现为不起振、偷停振。
并且量产的话,这个 bug 还是带比例的发生,甚至还有到用户现场后才发生。

根本原因,是 f103 内部晶振驱动器的相位裕量,和国内的廉价 32K 晶振八字不合。
用好一点的晶振(例如村田)固然可以解决,但为啥不换一个好一点的外置 RTC 呢?

久而久之,成了刻板印象:STM32-RTC 不咋滴。
作者: lmn2005    时间: 2024-1-9 07:54
t3486784401 发表于 2024-1-9 03:01
早期的 f103 系列出现过挑晶振的问题,直观表现为不起振、偷停振。
并且量产的话,这个 bug 还是带比例的发 ...

原来如此,学习了
作者: z31com_1    时间: 2024-1-9 09:08
很多人觉得不好用,所地才不用。
作者: z31com_1    时间: 2024-1-9 09:08
华强北最强版本 低价只为跑量

作者: 595953427@qq    时间: 2024-1-9 13:48
HAL库又叫BUG库,果然不是空穴来风,RTC的HAL库有BUG,设置日期和时间后可以读到正确的日期和时间,芯片复位后就只能读到正确的时间,读不到正确的日期了,看来只能自己写设置日期时间和获取日期时间的算法。

作者: 595953427@qq    时间: 2024-1-9 14:24
修改一下hal库,使用自己的设置时间和获取时间算法,RTC时间终于正常了
[attach]2015242[/attach]
作者: 595953427@qq    时间: 2024-1-9 14:37
本帖最后由 595953427@qq 于 2024-1-9 14:45 编辑

STM32F103性能太弱鸡,卡成狗
   [attach]2015250[/attach]    [attach]2015251[/attach]
[attach]2015248[/attach]

作者: 595953427@qq    时间: 2024-1-9 14:53
595953427@qq 发表于 2024-1-9 14:37
STM32F103性能太弱鸡,卡成狗

这还是用标准外设库写的,用了FreeRTOS + lvgl,如果用HAL库会更卡
作者: chen131578    时间: 2024-1-9 15:19
32刚要学,估计通用的没有专用芯片准确或者简单吧。
作者: alloystorm    时间: 2024-1-9 16:32
非独立晶体的话,集成内部RTC,影响因素比较多,精度还是存疑。




欢迎光临 数码之家 (https://www.mydigit.cn/) Powered by Discuz! X3.4