STM32F101xx and STM32F103xx RTC 校準(zhǔn)
應(yīng)用筆記
STM32F101xx and STM32F103xx RTC 校準(zhǔn)
總體介紹
1 RTC校準(zhǔn)基本原理
1.1
注:曲率K由于不同的晶體而不同,這里是針對 STM3210B-EVAL開發(fā)板來說的,關(guān)于這部分可以參考相關(guān)晶體制造商提供的詳細(xì)信息。
在很多應(yīng)用領(lǐng)域需要一個(gè)高準(zhǔn)確度的時(shí)鐘,但是在實(shí)際中有好多綜合因素限制著精度的提高,通常,典型的方法是通過調(diào)節(jié)晶體的負(fù)載電容來調(diào)節(jié)精度,這一方法,雖然十分有效,但是也存在這一些缺點(diǎn):
1 它需要多加一個(gè)外部器件(可調(diào)電容)。
2
取代這種傳統(tǒng)的模擬的方法,STM32F10xxx系列提供了一個(gè)數(shù)字校準(zhǔn)器,允許用戶用軟件控制的方法進(jìn)行校準(zhǔn),非常的好用!
1.2
1 溫度變化; 2 晶體本身的變化。前面講述了一般通常的方法都是用一個(gè)麻煩的可調(diào)電容來補(bǔ)償誤差,這里STM32F10xxx 使用的是一個(gè)周期計(jì)數(shù)器來進(jìn)行校正,這個(gè)數(shù)字校正器通過從220個(gè)時(shí)鐘周期中減去0到127個(gè)周期的方法來校正的,如圖所示:
究竟有多少個(gè)時(shí)鐘節(jié)拍是空白的取決于最近一次向備份寄存區(qū)域RTC校準(zhǔn)寄存器最后七位加載的值,
上面所描述的都是基于一下條件的:
注:在這篇應(yīng)用筆記中,默認(rèn)都是預(yù)分頻位32766。
2 計(jì)算校準(zhǔn)偏差量
這個(gè)方法我們可以分一下幾步來做:
第一步:使能LSE,并且將LSE作為RTC時(shí)鐘,然后使能RTC;
第二步:使能RTC時(shí)鐘經(jīng)過64分頻輸出,然后在器件的ANTI_TAMP 管腳就可以測得頻率輸出,不過這需要設(shè)置一下
BKP_RTCCR寄存器的CCO位,讓其置一使能輸出。
第三步:算出晶體頻率偏差多少個(gè)ppm,怎么算呢?因?yàn)槲覀兦懊嬲f過,校準(zhǔn)值是32766,因而理論上64分頻后輸出為511.968HZ,所以我們將實(shí)際測量出來的頻率作出與理論值的差值,然后將這個(gè)差值轉(zhuǎn)化為ppm,如何轉(zhuǎn)化成ppm,知道ppm定義之后就可以知道,ppm是每一百萬赫茲所偏差的赫茲數(shù),那現(xiàn)在相對511.96875的偏差值的ppm就可以計(jì)算出來了:△f(HZ)*10 00000.
第四步:到表中去找同計(jì)算結(jié)果最相近的ppm數(shù)所對應(yīng)的校準(zhǔn)值寫入寄存器就可以了!
注意:讓RTC分頻32766,它的分頻寄存器里面要寫32765的,因?yàn)樗?jì)數(shù)到0.
注意:本方法由于是基于時(shí)鐘周期削去的方法校準(zhǔn)的,因此是針對長期進(jìn)行補(bǔ)償,在有限時(shí)間內(nèi)補(bǔ)償未必發(fā)生作用。
3 在溫度變化范圍上校準(zhǔn)
acc:溫度轉(zhuǎn)變時(shí)的偏差,單位是ppm
K:曲率常量,值為-0.14ppm/℃
T0:溫度轉(zhuǎn)變時(shí)的攝氏度
T:工作環(huán)境的攝氏度
例如:一個(gè)器件在室溫時(shí)體現(xiàn)出來的是27ppm的偏差,但是應(yīng)用在40攝氏度的環(huán)境中,那么用這個(gè)等式就可以計(jì)算出來溫度轉(zhuǎn)變時(shí)的偏差為
因?yàn)榫绕剖?8ppm,那么依然從上表中可以找出校準(zhǔn)值為19。
4 結(jié)論
STM32F10xxx 的RTC數(shù)字時(shí)鐘校準(zhǔn)特性允許用戶以最低微的成本來調(diào)整時(shí)鐘的精度,這個(gè)特性也提供了一種方法和思路:那就是為什么溫度漂移也可以被校正或者說被預(yù)先估計(jì)出來,當(dāng)然啦,這一系列的數(shù)據(jù)和結(jié)論都是建立在分頻為32766(而不是32768)之上的(分頻寄存器里面寫32765).
評論