STM32F101xx and STM32F103xx RTC 校準
應用筆記
STM32F101xx and STM32F103xx RTC 校準
總體介紹
1 RTC校準基本原理
1.1
注:曲率K由于不同的晶體而不同,這里是針對 STM3210B-EVAL開發(fā)板來說的,關于這部分可以參考相關晶體制造商提供的詳細信息。
在很多應用領域需要一個高準確度的時鐘,但是在實際中有好多綜合因素限制著精度的提高,通常,典型的方法是通過調節(jié)晶體的負載電容來調節(jié)精度,這一方法,雖然十分有效,但是也存在這一些缺點:
1 它需要多加一個外部器件(可調電容)。
2
取代這種傳統(tǒng)的模擬的方法,STM32F10xxx系列提供了一個數字校準器,允許用戶用軟件控制的方法進行校準,非常的好用!
1.2
1 溫度變化; 2 晶體本身的變化。前面講述了一般通常的方法都是用一個麻煩的可調電容來補償誤差,這里STM32F10xxx 使用的是一個周期計數器來進行校正,這個數字校正器通過從220個時鐘周期中減去0到127個周期的方法來校正的,如圖所示:
究竟有多少個時鐘節(jié)拍是空白的取決于最近一次向備份寄存區(qū)域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.
注意:本方法由于是基于時鐘周期削去的方法校準的,因此是針對長期進行補償,在有限時間內補償未必發(fā)生作用。
3 在溫度變化范圍上校準
acc:溫度轉變時的偏差,單位是ppm
K:曲率常量,值為-0.14ppm/℃
T0:溫度轉變時的攝氏度
T:工作環(huán)境的攝氏度
例如:一個器件在室溫時體現出來的是27ppm的偏差,但是應用在40攝氏度的環(huán)境中,那么用這個等式就可以計算出來溫度轉變時的偏差為
因為精度偏移是18ppm,那么依然從上表中可以找出校準值為19。
4 結論
STM32F10xxx 的RTC數字時鐘校準特性允許用戶以最低微的成本來調整時鐘的精度,這個特性也提供了一種方法和思路:那就是為什么溫度漂移也可以被校正或者說被預先估計出來,當然啦,這一系列的數據和結論都是建立在分頻為32766(而不是32768)之上的(分頻寄存器里面寫32765).
評論