<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32F101xx and STM32F103xx RTC 校準

          STM32F101xx and STM32F103xx RTC 校準

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          AN2604
          應(yīng)用筆記
          STM32F101xx and STM32F103xx RTC 校準
          總體介紹
          實時時鐘在很多嵌入式應(yīng)用中是必不可少的,但是由于外部環(huán)境溫度的改變,驅(qū)動RTC的晶體頻率會發(fā)生變化,因此RTC就沒有預(yù)想的那么準確了!
          STM32F101xx and STM32F103xx附帶有數(shù)字時鐘校準電路,因此可以適應(yīng)與變化的環(huán)境,它主要是來補償晶體由于環(huán)境的變化,這篇應(yīng)用筆記主要討論了RTC校準的基本原理以及解釋了如何利用RTC校準來提高計時精度。
          1 RTC校準基本原理
          1.1 晶體的準確性
          在很多計時領(lǐng)域,通常都是用“石英精確度”這么一個術(shù)語來描述的,石英晶體振蕩器提供了一個遠遠優(yōu)于其他類型振蕩器的精確度,但是它并不是完美的,石英晶體振蕩器對溫度十分敏感, Figure 1 展示了一個32.768HZ晶體的頻率精確度(acc)和溫度(T)以及曲率(K)的關(guān)系,這個曲線可以用下面的公式給出:
          注:曲率K由于不同的晶體而不同,這里是針對 STM3210B-EVAL開發(fā)板來說的,關(guān)于這部分可以參考相關(guān)晶體制造商提供的詳細信息。
          在很多應(yīng)用領(lǐng)域需要一個高準確度的時鐘,但是在實際中有好多綜合因素限制著精度的提高,通常,典型的方法是通過調(diào)節(jié)晶體的負載電容來調(diào)節(jié)精度,這一方法,雖然十分有效,但是也存在這一些缺點:
          1 它需要多加一個外部器件(可調(diào)電容)。
          2 其增大了電流消耗(這在電池供電的場合尤為突出)。
          取代這種傳統(tǒng)的模擬的方法,STM32F10xxx系列提供了一個數(shù)字校準器,允許用戶用軟件控制的方法進行校準,非常的好用!
          1.2 具體方法
          STM32F10xxx 的RTC模塊是用一個32768HZ的通常石英晶體驅(qū)動的,其實石英晶體是一種能夠提供非常固定頻率的,但是有以下兩種情況導致了其頻率的不穩(wěn)定:
          1 溫度變化; 2 晶體本身的變化。前面講述了一般通常的方法都是用一個麻煩的可調(diào)電容來補償誤差,這里STM32F10xxx 使用的是一個周期計數(shù)器來進行校正,這個數(shù)字校正器通過從220個時鐘周期中減去0到127個周期的方法來校正的,如圖所示:
          究竟有多少個時鐘節(jié)拍是空白的取決于最近一次向備份寄存區(qū)域RTC校準寄存器最后七位加載的值, 之所以這個校準寄存器放在備份區(qū)域是因為這個寄存器即使在系統(tǒng)掉電情況下仍然可以通過后備電池進行供電(譯者注:如果后背電池也掉電,當然這個寄存器的值也會丟失的),注意:從上圖中可以看出時鐘輸出引腳是在校準之前的頻率,所以這個值是不會被校準所改變的,盡管已經(jīng)進行了校準,但是這個輸出是在校準之前的頻率。
          每一個校準節(jié)拍將會從220個時鐘周期中減去一個周期,這意味著每一個校準節(jié)拍將會有0.954PPM的調(diào)整值(譯者注:Ppm指的是每百萬個赫茲會偏移多少赫茲,即真實頻率值為標稱頻率值加上或者減去百萬分之一的XXX,其中XXX指的是晶體廠商提供的頻率穩(wěn)定度),結(jié)果,振蕩器將會減慢0到121個ppm,下面的一個表格顯示了當校準寄存器變化一位是會變化多少個ppm或者說30天中會放慢多少秒:




          上面所描述的都是基于一下條件的:
          STM32F10xxx RTC的數(shù)字校準電路只是從晶體時鐘周期里減去了若干個周期,而且RTC的預(yù)分頻器假定設(shè)置為32768,所以說時鐘快于32868HZ的晶體可以被校準,而慢于32768HZ的晶體不能被校準,因此校準范圍是32772HZ 到32768HZ(譯者注:為什么是32772呢,因為最大的校準PPM是121,121的意思是一百萬HZ時候會變化(調(diào)整)121HZ,所以32768HZ時候便可以調(diào)整{32768*(121/10 00000)}即:3.964HZ,將近4HZ,而且這個校準只是調(diào)慢的,所以能夠從32772HZ校準到32768HZ,所以是32772)。
          前面我們所講的都是以預(yù)分頻為32768,但是晶體頻率范圍是變化的,所以當晶體頻率快于32768HZ是可以被校準的(可以放慢),但是當晶體頻率慢于32768HZ呢?雖然不能被校準,但是并不是無能為力,我們可以把校準預(yù)分頻器改為32766,這樣只要晶體頻率不低于32766HZ就可以校準了,這樣總的可以校準(放慢){32766*(121/10 00000)}即3.96HZ,也將近4HZ,于是調(diào)整范圍就變成了(32766HZ到32770HZ)。
          注:在這篇應(yīng)用筆記中,默認都是預(yù)分頻位32766。
          2 計算校準偏差量
          對于一個給定的應(yīng)用,如何確定我們所需要的校準值呢?這里有一個很好的方法就是利用到了RTC的時鐘輸出模式,就是如上圖2所示的器件提供了一個RTC時鐘經(jīng)過一個64分屏器輸出的的信號,這個信號可以用來精確的測量晶體產(chǎn)生的頻率,如果是準32768HZ時,輸出正好是512HZ。
             這個方法我們可以分一下幾步來做:
          第一步:使能LSE,并且將LSE作為RTC時鐘,然后使能RTC;
          第二步:使能RTC時鐘經(jīng)過64分頻輸出,然后在器件的ANTI_TAMP 管腳就可以測得頻率輸出,不過這需要設(shè)置一下
          BKP_RTCCR寄存器的CCO位,讓其置一使能輸出。
          第三步:算出晶體頻率偏差多少個ppm,怎么算呢?因為我們前面說過,校準值是32766,因而理論上64分頻后輸出為511.968HZ,所以我們將實際測量出來的頻率作出與理論值的差值,然后將這個差值轉(zhuǎn)化為ppm,如何轉(zhuǎn)化成ppm,知道ppm定義之后就可以知道,ppm是每一百萬赫茲所偏差的赫茲數(shù),那現(xiàn)在相對511.96875的偏差值的ppm就可以計算出來了:△f(HZ)*10 00000.
          第四步:到表中去找同計算結(jié)果最相近的ppm數(shù)所對應(yīng)的校準值寫入寄存器就可以了!
          注意:讓RTC分頻32766,它的分頻寄存器里面要寫32765的,因為它計數(shù)到0.
          舉個例子:我們現(xiàn)在從ANTI_TAMP管腳測得頻率為: 511.982HZ,那么算出來同511.968HZ的偏差位0.14HZ,用上面公式換算出來為 27.35 ppm,在表中找到最近的為28ppm,得出的值寫入校準寄存器,當然,這里還有誤差0.65個ppm,由于表中給出了27個ppm的話每個月會誤差69秒,那么現(xiàn)在27.35大約誤差71秒左右,那么0.65ppm的話每個月只會誤差1.7秒左右了,所以說我們將27.35個ppm誤差降到0.65個ppm的結(jié)果是把每個月誤差69秒降到每個月誤差1.7秒左右了,已經(jīng)非??捎^。
          注意:本方法由于是基于時鐘周期削去的方法校準的,因此是針對長期進行補償,在有限時間內(nèi)補償未必發(fā)生作用。
          3 在溫度變化范圍上校準
          現(xiàn)在我們講在溫度變化方面如何計算校準值,這一部分提供了這樣一個步驟來最大限度的降低在最大溫度變化范圍內(nèi)的頻率變化,這包括調(diào)整溫度曲線以至于讓它在0ppm邊緣有等量的誤差點,下圖3演示了如何將溫度變化帶來的頻率誤差減小到最?。?br />這個校準公式為: ,式中變量如下:
          acc:溫度轉(zhuǎn)變時的偏差,單位是ppm
          K:曲率常量,值為-0.14ppm/℃
          T0:溫度轉(zhuǎn)變時的攝氏度
          T:工作環(huán)境的攝氏度
          例如:一個器件在室溫時體現(xiàn)出來的是27ppm的偏差,但是應(yīng)用在40攝氏度的環(huán)境中,那么用這個等式就可以計算出來溫度轉(zhuǎn)變時的偏差為
          因為精度偏移是18ppm,那么依然從上表中可以找出校準值為19。
          4 結(jié)論
          STM32F10xxx 的RTC數(shù)字時鐘校準特性允許用戶以最低微的成本來調(diào)整時鐘的精度,這個特性也提供了一種方法和思路:那就是為什么溫度漂移也可以被校正或者說被預(yù)先估計出來,當然啦,這一系列的數(shù)據(jù)和結(jié)論都是建立在分頻為32766(而不是32768)之上的(分頻寄存器里面寫32765).


          關(guān)鍵詞: STM32F101xxSTM32F103xxRTC校

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();