stm32 RTC时钟快速校准讨论10分钟能校准完成都可以,成本要低

2019-12-22 13:47发布

本帖最后由 蜗牛蜗牛 于 2017-9-28 20:02 编辑

能达到一个月误差 10s就可以,不要求更高了

1.目前我知道方法是可以通过测试P13脚晶振频率,算出 RTC校准值 ,但是好像要得到一个准确频率仪器应该不便宜,所有这个也不考虑 了

2.就是运行一段时间(几天吧或者10几天),和本地时间对比算出来,但是要批量做,所以校准时间不能太长,这个方法也是不可取

由于对stm32深层次东西不太熟悉,问下这个方法可不可行,

通过GPS校准(由于本身产品不贵,不想用时钟芯片,还得做的时钟相对比较准,GPS只是校准用不会配到产品上,配上了就不讨论校准了)
假设GPS接stm32串口运行10分钟(不是固定的也可以改其他时间省时间越好),然后,串口从接上那一刻读出时间 ,同时读出RTC 现在时间  外加(RTC_DIV寄存器) ,
等到10分钟整的时候,再读一边RTC时间 外加(RTC_DIV寄存器)值,通过这2个数据算计出误差时间,然后写进RTC的校准寄存器里面,
现在我感觉可能会出的问题是:
1.stm32运行 或者说串口接收数据的延时,这个延时时间应该不是固定的,会不会有延时或者误差 ,使得我测量这10分钟 时间不准,
毕竟10分钟比较短,几个机器周期误差,放大后就会是很大的误差,这个校准就没意义 了

论坛大神有没有这样用过的?


关于(RTC_DIV寄存器)官方手册介绍:
在TR_CLK的每个周期里,RTC预分频器中计数器的值都会被重新设置为RTC_PRL寄存器的
值。用户可通过读取RTC_DIV寄存器,以获得预分频计数器的当前值,而不停止分频计数器的
工作,从而获得精确的时间测量。此寄存器是只读寄存器,其值在RTC_PRL或RTC_CNT寄存
器中的值发生改变后,由硬件重新装载。


目前产品粗略校准,用示波器测的p13脚 ,现在一个月误差大约是2-3分钟
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
29条回答
wye11083
1楼-- · 2019-12-22 15:20
用得着校准吗?外面接个32768不得了。
shiva_shiva
2楼-- · 2019-12-22 17:11
 精彩回答 2  元偷偷看……
蜗牛蜗牛
3楼-- · 2019-12-22 19:49
wye11083 发表于 2017-9-28 17:27
用得着校准吗?外面接个32768不得了。

32.768晶振也不是很准啊所以才有误差,要是准就不会有误差了32.768有可能是32.768456231.....这样的
蜗牛蜗牛
4楼-- · 2019-12-23 01:24
shiva_shiva 发表于 2017-9-28 17:27
使用带秒脉冲的gps模块,这样你不但可以得到当前时间,还能得到准确的秒沿,两个秒沿之间是严格的1s,用这 ...

目前还没考虑到温度补偿, 不知道温度影响大不大还没做过实验,温度一般一个月会飘多少?有知道的吗
蜗牛蜗牛
5楼-- · 2019-12-23 04:30
shiva_shiva 发表于 2017-9-28 17:27
使用带秒脉冲的gps模块,这样你不但可以得到当前时间,还能得到准确的秒沿,两个秒沿之间是严格的1s,用这 ...

谢谢你提到那种GPS模块,我试试看
3DA502
6楼-- · 2019-12-23 08:04
电波钟   这个东西值得考虑,长波不用考虑室内看不见GPS问题,另外功耗比GPS低得多,价格也是低很多,精度也够用

一周热门 更多>