您的位置 首页 系统

STM32F101xx and STM32F103xx RTC 校准

AN2604应用笔记STM32F101xxandSTM32F103xxRTC校准总体介绍实时时钟在很多嵌入式应用中是必不可少的,但是由于外部环境温度的改变

AN2604
运用笔记
STM32F101xx and STM32F103xx RTC 校准
整体介绍
实时时钟在许多嵌入式运用中是必不可少的,可是由于外部环境温度的改动,驱动RTC的晶体频率会产生改动,因此RTC就没有料想的那么准确了!
STM32F101xx and STM32F103xx顺便有数字时钟校准电路,因此能够适应与改动的环境,它首要是来补偿晶体由于环境的改动,这篇运用笔记首要评论了RTC校准的基本原理以及解说了怎样运用RTC校准来进步计时精度。
1 RTC校准基本原理
1.1 晶体的准确性
在许多计时范畴,一般都是用“石英准确度”这么一个术语来描绘的,石英晶体振荡器供给了一个远远优于其他类型振荡器的准确度,可是它并不是完美的,石英晶体振荡器对温度十分灵敏, Figure 1 展现了一个32.768HZ晶体的频率准确度(acc)和温度(T)以及曲率(K)的联系,这个曲线能够用下面的公式给出:
注:曲率K由于不同的晶体而不同,这儿是针对 STM3210B-EVAL开发板来说的,关于这部分能够参阅相关晶体制造商供给的详细信息。
在许多运用范畴需求一个高准确度的时钟,可是在实践中有很多归纳要素约束着精度的进步,一般,典型的办法是通过调理晶体的负载电容来调理精度,这一办法,尽管十分有用,可是也存在这一些缺陷:
1 它需求多加一个外部器材(可调电容)。
2 其增大了电流耗费(这在电池供电的场合尤为杰出)。
替代这种传统的模仿的办法,STM32F10xxx系列供给了一个数字校准器,答使用户用软件操控的办法进行校准,十分的好用!
1.2 具体办法
STM32F10xxx 的RTC模块是用一个32768HZ的一般石英晶体驱动的,其实石英晶体是一种能够供给十分固定频率的,可是有以下两种状况导致了其频率的不稳定:
1 温度改动; 2 晶体自身的改动。前面叙述了一般一般的办法都是用一个费事的可调电容来补偿差错,这儿STM32F10xxx 运用的是一个周期计数器来进行校对,这个数字校对器通过从220个时钟周期中减去0到127个周期的办法来校对的,如图所示:
终究有多少个时钟节拍是空白的取决于最近一次向备份存放区域RTC校准存放器最终七位加载的值, 之所以这个校准存放器放在备份区域是由于这个存放器即便在体系掉电状况下仍然能够通过后备电池进行供电(译者注:假如后背电池也掉电,当然这个存放器的值也会丢掉的),留意:从上图中能够看出时钟输出引脚是在校准之前的频率,所以这个值是不会被校准所改动的,尽管现已进行了校准,可是这个输出是在校准之前的频率。
每一个校准节拍将会从220个时钟周期中减去一个周期,这意味着每一个校准节拍将会有0.954PPM的调整值(译者注:Ppm指的是每百万个赫兹会偏移多少赫兹,即实在频率值为标称频率值加上或许减去百万分之一的XXX,其间XXX指的是晶体厂商供给的频率稳定度),成果,振荡器将会减慢0到121个ppm,下面的一个表格显现了当校准存放器改动一位是会改动多少个ppm或许说30天中会怠慢多少秒:




上面所描绘的都是根据一下条件的:
STM32F10xxx RTC的数字校准电路仅仅从晶体时钟周期里减去了若干个周期,而且RTC的预分频器假定设置为32768,所以说时钟快于32868HZ的晶体能够被校准,而慢于32768HZ的晶体不能被校准,因此校准规模是32772HZ 到32768HZ(译者注:为什么是32772呢,由于最大的校准PPM是121,121的意思是一百万HZ时分会改动(调整)121HZ,所以32768HZ时分便能够调整{32768*(121/10 00000)}即:3.964HZ,将近4HZ,而且这个校准仅仅调慢的,所以能够从32772HZ校准到32768HZ,所以是32772)。
前面咱们所讲的都是以预分频为32768,可是晶体频率规模是改动的,所以当晶体频率快于32768HZ是能够被校准的(能够怠慢),可是当晶体频率慢于32768HZ呢?尽管不能被校准,可是并不是力不从心,咱们能够把校准预分频器改为32766,这样只需晶体频率不低于32766HZ就能够校准了,这样总的能够校准(怠慢){32766*(121/10 00000)}即3.96HZ,也将近4HZ,所以调整规模就变成了(32766HZ到32770HZ)。
注:在这篇运用笔记中,默许都是预分频位32766。
2 核算校准差错量
关于一个给定的运用,怎样确认咱们所需求的校准值呢?这儿有一个很好的办法便是运用到了RTC的时钟输出形式,便是如上图2所示的器材供给了一个RTC时钟通过一个64分屏器输出的的信号,这个信号能够用来准确的丈量晶体产生的频率,假如是准32768HZ时,输出正好是512HZ。
   这个办法咱们能够分一下几步来做:
第一步:使能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.
举个比如:咱们现在从ANTI_TAMP管脚测得频率为: 511.982HZ,那么算出来同511.968HZ的差错位0.14HZ,用上面公式换算出来为 27.35 ppm,在表中找到最近的为28ppm,得出的值写入校准存放器,当然,这儿还有差错0.65个ppm,由于表中给出了27个ppm的话每个月会差错69秒,那么现在27.35大约差错71秒左右,那么0.65ppm的话每个月只会差错1.7秒左右了,所以说咱们将27.35个ppm差错降到0.65个ppm的成果是把每个月差错69秒降到每个月差错1.7秒左右了,现已十分可观。
留意:本办法由所以根据时钟周期削去的办法校准的,因此是针对长时间进行补偿,在有限时间内补偿未必产生效果。
3 在温度改动规模上校准
现在咱们讲在温度改动方面怎样核算校准值,这一部分供给了这样一个过程来最大极限的下降在最大温度改动规模内的频率改动,这包含调整温度曲线以至于让它在0ppm边际有等量的差错点,下图3演示了怎样将温度改动带来的频率差错减小到最小:
这个校准公式为: ,式中变量如下:
acc:温度改变时的差错,单位是ppm
K:曲率常量,值为-0.14ppm/℃
T0:温度改变时的摄氏度
T:工作环境的摄氏度
例如:一个器材在室温时表现出来的是27ppm的差错,可是运用在40摄氏度的环境中,那么用这个等式就能够核算出来温度改变时的差错为
由于精度偏移是18ppm,那么仍然从上表中能够找出校准值为19。
4 定论
STM32F10xxx 的RTC数字时钟校准特性答使用户以最卑微的成原本调整时钟的精度,这个特性也供给了一种办法和思路:那便是为什么温度漂移也能够被校对或许说被预先估量出来,当然啦,这一系列的数据和定论都是建立在分频为32766(而不是32768)之上的(分频存放器里边写32765).

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/259892.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部