关于时钟晶振32.768khz,rtc的校准方法-凯发真人娱乐k8

关于时钟晶振32.768khz,rtc的校准方法

作者: 扬兴晶振 日期:2021-07-21 浏览量:

  实现rtc 校准的核心之一是库文件stm321f0x_bkp.c中的void bkp_setrtccalibrationvalue (uint8_t calibrationvalue) 函数。谈到rtc校准的相关参考文档包括an2604.pdf,an2821.pdf和an2821.zip。这三个文档都可以从stm32官方网站下载。

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

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

  那么,如何测量误差,并以此得出校准值。一般来说有两种方法:

  一、测量tamperpin的频率值,然后计算ppm误差

  二、是实际运行一定的天数,与标准时钟做对比,先得到每30天跑快的秒数,然后计算ppm误差。

  an2604.pdf,an2821.pdf里都详细描述了第一种方法。an2821.zip则使用定时器t2对tamperpin的频率值进行自动测量,实现了自动校准。自动校准确实简化了用户操作,但是它要依赖于8mhz主时钟的精度。自动校准不可能达到比8mhz主时钟精度更高的结果。所以给用户留有手动校准界面仍是万全之策。即使有自动校准,也可以手动、自动叠加作用。

  使用第一种方法进行校准时,需要准确测量tamperpin的频率值,比如达到511.xxxhz的精度。普通示波器做不到这一点,一般的频率计也不行,需要高精度的频率计才可以。

rtc校准,32.768khz晶振,扬兴科技

  这两种方法的核心都是计算ppm误差。我们先看一下第一种方法是如何计算ppm误差的。由于使用了32766作为分频系数,因此32766hz是不需要校准的基准频率。不要把32768hz看得太重,32766hz可看成新的标称频率。tamperpin的频率应为32766hz/64=511.968hz。这也就是文档中计算误差时反复使用的基准频率。按照文档中所举的例子,若实测tamperpin的频率为511.982hz,则误差为27.35ppm。计算过程为(511.982hz-511.968hz)/ 511.968hz *10^6 = 27.35ppm。文档最后给出最接近的校准值为28。注意这里是最后的校准值28,是由27 ppm查表得到的,而不是有些帖子中误解的将27.35ppm近似成28ppm。

  其实ppm误差的计算公式为:ppm误差=偏差/基准值*10的6次方。因此,采用第二种方法时,先得到了每30天跑快的秒数。这跑快的秒数就是偏差,而30天就是基准值。所以ppm误差=每30天跑快的秒数/(30天*24小时*3600秒)*10的6次方。用这个公式可以容易地解释文档an2604.pdf中提到的“0.65ppm大约是每月误差1.7秒”。因为:1.7/(30*24*3600)*10^6 = 0.65ppm。

  计算出了ppm误差,还要解决查表。知道文档中给出的表格是怎么来的之后,可以使用简单的计算公式代替查表。an2604.pdf中说,若校准值为1,则rtc 校准时,每2的20次方个时钟周期扣除1个时钟脉冲。这相当于0.954ppm(1/2^20*10^6 = 0.954)。而校准值最大为127,所以最大可以减慢121ppm(0.954ppm*127 = 121)。所以这个校准表就是由简单的乘除运算得来的,当然要使用浮点运算才可以得到准确结果。

推荐阅读

样品申请
网站地图