×
单片机 > 单片机程序设计 > 详情

stm32 rtc 误差实验

发布时间:2020-05-18 发布时间:
|

1.

stm32f103re,使用外部晶振32.768k,没有校准rtc时钟,使用串口打印时间,用带时间戳的串口工具记录串口接收的时间。


2.

测试时间一天。


数据如下:


开始计时:电脑时间[08:45:03.626]    stm32时间 00:03:20


结束计时:电脑时间[10:17:05.267]    stm32时间 25:35:50


历时:电脑 25:32:01:641    stm32时间 25:32:30


3.

结论


单片机快28秒,


28/25=1.12 


stm32平均每小时快1.12秒


4.

按照AN2604.pdf描述的原理,RTC 的校准值应在0-127之间。可实现的校准误差对应为0-121ppm。相当于每30天跑快的秒数为0-314s。


实现RTC 校准的核心之一是库文件Stm321f0x_bkp.c中的void BKP_SetRTCCalibrationValue (uint8_t CalibrationValue) 函数。谈到RTC校准的相关参考文档包括AN2604.pdf,AN2821.pdf和AN2821.zip。这三个文档都可以从STM32官方网站下载。


这里应注意的一个关键问题是,RTC只能对跑快进行校准,不能对跑慢进行校准。如果手表晶振的标称频率是32768Hz,设其可能的误差范围是±2Hz,则实际频率会在32766Hz-32770Hz之间。如果RTC的内部分频系数设定为32768,则32768Hz是不需要校准的频率,32768Hz-32770Hz是可以校准的频率(最大校准能力大概是32772Hz)。但是32766Hz-32768Hz的跑慢频率段则无法实现校准。为此,在推荐的校准方法中,使用32766代替32768作为分频系数。这样一来,32766Hz是不需要校准的频率,32766Hz-32770Hz是可以校准的频率范围。





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向