STM32F101xx and STM32F103xx RTC 校准
应用笔记
STM32F101xx and STM32F103xx RTC 校准
总体介绍
1 RTC校准基本原理
1.1
注:曲率K由于不同的晶体而不同,这里是针对 STM3210B-EVAL开发板来说的,关于这部分可以参考相关晶体制造商提供的详细信息。
在很多应用领域需要一个高准确度的时钟,但是在实际中有好多综合因素限制着精度的提高,通常,典型的方法是通过调节晶体的负载电容来调节精度,这一方法,虽然十分有效,但是也存在这一些缺点:
1 它需要多加一个外部器件(可调电容)。
2
取代这种传统的模拟的方法,STM32F10xxx系列提供了一个数字校准器,允许用户用软件控制的方法进行校准,非常的好用!
1.2
1 温度变化; 2 晶体本身的变化。前面讲述了一般通常的方法都是用一个麻烦的可调电容来补偿误差,这里STM32F10xxx 使用的是一个周期计数器来进行校正,这个数字校正器通过从220个时钟周期中减去0到127个周期的方法来校正的,如图所示:
究竟有多少个时钟节拍是空白的取决于最近一次向备份寄存区域RTC校准寄存器最后七位加载的值,
上面所描述的都是基于一下条件的:
注:在这篇应用笔记中,默认都是预分频位32766。
2 计算校准偏差量
这个方法我们可以分一下几步来做:
第一步:使能LSE,并且将LSE作为RTC时钟,然后使能RTC;
第二步:使能RTC时钟经过64分频输出,然后在器件的ANTI_TAMP 管脚就可以测得频率输出,不过这需要设置一下
BKP_RTCCR寄存器的CCO位,让其置一使能输出。
第三步:算出晶体频率偏差多少个ppm,怎么算呢?因为我们前面说过,校准值是32766,因而理论上64分频后输出为511.968HZ,所以我们将实际测量出来的频率作出与理论值的差值,然后将这个差值转化为ppm,如何转化成ppm,知道ppm定义之后就可以知道,ppm是每一百万赫兹所偏差的赫兹数,那现在相对511.96875的偏差值的ppm就可以计算出来了:△f(HZ)*10 00000.
第四步:到表中去找同计算结果最相近的ppm数所对应的校准值写入寄存器就可以了!
注意:让RTC分频32766,它的分频寄存器里面要写32765的,因为它计数到0.
注意:本方法由于是基于时钟周期削去的方法校准的,因此是针对长期进行补偿,在有限时间内补偿未必发生作用。
3 在温度变化范围上校准
这个校准公式为: ,式中变量如下:
acc:温度转变时的偏差,单位是ppm
K:曲率常量,值为-0.14ppm/℃
T0:温度转变时的摄氏度
T:工作环境的摄氏度
例如:一个器件在室温时体现出来的是27ppm的偏差,但是应用在40摄氏度的环境中,那么用这个等式就可以计算出来温度转变时的偏差为
因为精度偏移是18ppm,那么依然从上表中可以找出校准值为19。
4 结论
STM32F10xxx 的RTC数字时钟校准特性允许用户以最低微的成本来调整时钟的精度,这个特性也提供了一种方法和思路:那就是为什么温度漂移也可以被校正或者说被预先估计出来,当然啦,这一系列的数据和结论都是建立在分频为32766(而不是32768)之上的(分频寄存器里面写32765).
评论