簡(jiǎn)介
AT32系列MCU內(nèi)部都有提供適合運(yùn)行的內(nèi)部高速時(shí)鐘(HICK),其本質(zhì)就是內(nèi)置于芯片的RC振蕩器。在25℃下,其典型值頻率8MHz的精度由工廠校準(zhǔn)到±1%,在-40到105℃,該內(nèi)部高速時(shí)鐘的精度達(dá)到±2.5%,可見(jiàn)精度會(huì)受到溫度的影響。為了降低環(huán)境溫度對(duì)精度造成的影響,用戶(hù)可在運(yùn)行時(shí)間隙調(diào)用校準(zhǔn)程序來(lái)進(jìn)行校準(zhǔn)。
校準(zhǔn)及原理
校準(zhǔn)
每顆AT32 MCU芯片的內(nèi)部高速時(shí)鐘在出廠時(shí)都有被進(jìn)行校準(zhǔn),待芯片復(fù)位后該校準(zhǔn)值會(huì)自動(dòng)加載到CRM_CTRL寄存器的HICKCAL[7:0]位,與CRM_CTRL寄存器的HICKTRIM[4:0]位一起作用于HICK的校準(zhǔn),HICKTRIM[4:0]的復(fù)位值為0x20(不同系列該復(fù)位值可能不同),在外部電壓和溫度變化對(duì)內(nèi)部高速時(shí)鐘頻率產(chǎn)生影響時(shí),可通過(guò)軟件對(duì)HICKTRIM[4:0]這些位進(jìn)行編程,對(duì)HICK進(jìn)行微調(diào),以達(dá)到滿(mǎn)足要求的頻率。
原理
校準(zhǔn)的原理就是對(duì)當(dāng)前的HICK頻率進(jìn)行較為準(zhǔn)確的測(cè)量,參考實(shí)際的測(cè)量值與典型值的比較結(jié)果,判斷是否達(dá)到校準(zhǔn)的目的。此處用到的HICK測(cè)量方法不是采用外部設(shè)備來(lái)進(jìn)行的,而是使用片上定時(shí)器來(lái)對(duì)外部精準(zhǔn)的時(shí)鐘源周期進(jìn)行計(jì)數(shù),因定時(shí)器的計(jì)數(shù)時(shí)鐘源于HICK,這樣就可以通過(guò)精確的外部時(shí)鐘源周期來(lái)推算出當(dāng)前HICK的頻率值。在本應(yīng)用示例及文檔中,精準(zhǔn)時(shí)鐘源采用的是LEXT(通常RTC使用的32kHz晶振),圖示顯示了如何使用定時(shí)器計(jì)數(shù)個(gè)數(shù)來(lái)測(cè)量參考信號(hào)周期。圖1. 參考信號(hào)測(cè)量如上所示,為提高計(jì)數(shù)測(cè)量的準(zhǔn)確性,實(shí)際應(yīng)用中可連續(xù)對(duì)多個(gè)LEXT周期進(jìn)行計(jì)數(shù),再用求平均值的方式來(lái)減小誤差。頻率計(jì)算公式:Frequencytimer=(count1+count2+…+countN)/N*Frequencylext因HICK直接或間接的提供給系統(tǒng)時(shí)鐘,再通過(guò)timer頻率和主頻的關(guān)系,推算出此時(shí)HICK的頻率,當(dāng)前HICK的頻率值減去HICK典型值就是此時(shí)HICK的誤差頻率:Error(Hz)=Frequencyhick–8000000
硬件實(shí)現(xiàn)
由校準(zhǔn)原理可知,要想計(jì)算出HICK的頻率就必須得有一個(gè)準(zhǔn)確的校準(zhǔn)源,該文檔示例推薦的是采用LEXT,并且該校準(zhǔn)源需要連接到定時(shí)器的輸入捕獲通道。AT32MCU可通過(guò)CLKOUT功能將LEXT校準(zhǔn)源輸出,再通過(guò)內(nèi)部配置功能或外圍連線將CLKOUT與定時(shí)器的輸入通道連接圖2. 硬件連接
校準(zhǔn)方法
前文提到設(shè)置CRM_CTRL寄存器的HICKTRIM位可調(diào)整HICK輸出,校準(zhǔn)流程首先按HICKTRIM的默認(rèn)值為基點(diǎn)配置,準(zhǔn)確的測(cè)量出此時(shí)HICK實(shí)際的頻率值,然后按實(shí)際頻率與典型值計(jì)算得到頻率誤差,判斷該誤差是否在可接受誤差值范圍內(nèi),如果是,則返回成功,如果不是,則輪詢(xún)下一個(gè)HICKTRIM設(shè)置點(diǎn),再進(jìn)行測(cè)量判斷,直到輪詢(xún)完畢返回失敗。
使用說(shuō)明
函數(shù)說(shuō)明
與本文檔對(duì)應(yīng)的示例代碼中包含了三個(gè)主要的函數(shù)a)?clkout輸出配置主要進(jìn)行校準(zhǔn)源LEXT時(shí)鐘的開(kāi)啟,并將它配置由clkout來(lái)進(jìn)行輸出。由于示例的MCU型號(hào)支持clkout與timer10 channel1進(jìn)行內(nèi)部連接設(shè)置,如果該函數(shù)內(nèi)并未進(jìn)行clkout對(duì)應(yīng)GPIO Pin腳的初始化,并且采用外部連接,請(qǐng)加入GPIO Pin腳初始化即可。b) timer輸入配置主要進(jìn)行timer10的基礎(chǔ)時(shí)鐘配置、輸入捕獲配置及中斷配置,默認(rèn)采用校準(zhǔn)源時(shí)鐘的上升沿捕獲。由于示例的MCU型號(hào)支持clkout與timer10 channel1進(jìn)行內(nèi)部連接設(shè)置,如果該函數(shù)內(nèi)并未進(jìn)行timer10 channel1對(duì)應(yīng)GPIO Pin腳的初始化,并且采用外部連接,請(qǐng)加入GPIO Pin腳初始化即可。c) HICK校準(zhǔn)接口該函數(shù)為程序運(yùn)行時(shí)的校準(zhǔn)函數(shù)接口,可在一定時(shí)間周期或條件下調(diào)用該函數(shù)進(jìn)行HICK的校準(zhǔn),校準(zhǔn)到滿(mǎn)足誤差范圍的頻率時(shí),該函數(shù)返回成功,反之返回失敗。需注意:在校準(zhǔn)過(guò)程中HICK會(huì)有一個(gè)調(diào)整的過(guò)程,故此過(guò)程中的的主頻或外設(shè)頻率可能非預(yù)期值,所以通訊類(lèi)接口或時(shí)序強(qiáng)相關(guān)的外設(shè)需暫停使用,待校準(zhǔn)完成后再開(kāi)啟使用。
宏定義說(shuō)明
示例代碼中有兩個(gè)配置宏定義可以由用戶(hù)按實(shí)際使用情況來(lái)進(jìn)行修改。ERROR_VALUE_MAX定義了可接受的最大誤差范圍(單位Hz),如上值(10000)即表示校準(zhǔn)成功后的頻率精度為±10kHz,用戶(hù)可自行修改。需注意:由于HICK的校準(zhǔn)特性關(guān)系,精度要求越高(即ERROR_VALUE_MAX值越?。r(shí)校準(zhǔn)失敗的概率越大。CAPUTURE_NUM定義了LEXT校準(zhǔn)源的捕獲次數(shù),再用累計(jì)求平均的方式減小誤差。需注意:由于捕獲計(jì)數(shù)時(shí)間點(diǎn)比較隨機(jī)的關(guān)系,第一個(gè)計(jì)數(shù)值不準(zhǔn)確,故讀取的timer計(jì)數(shù)值需丟棄第一個(gè)計(jì)數(shù),所以該宏定義值需大于1。
校準(zhǔn)流程
可在系統(tǒng)運(yùn)行時(shí)狀態(tài)下調(diào)用校準(zhǔn)函數(shù)接口hick_trimming進(jìn)行校準(zhǔn)。為防止非預(yù)期情況的發(fā)生,在調(diào)用校準(zhǔn)前請(qǐng)確保各外設(shè)處于空閑未使用的狀態(tài)。首先會(huì)將校準(zhǔn)前CRM_CTRL寄存器中的HICKTRIM值進(jìn)行保留,初始校準(zhǔn)值從TRIM_VALUE_MAX/2開(kāi)始,對(duì)寫(xiě)入校準(zhǔn)值后的HICK頻率進(jìn)行測(cè)量,量得誤差精度是否滿(mǎn)足ERROR_VALUE_MAX設(shè)定要求,如果是返回校準(zhǔn)成功,如果未滿(mǎn)足則繼續(xù)輪詢(xún)下一HICKTRIM值,直到輪詢(xún)完所有,回寫(xiě)校準(zhǔn)前的HICKTRIM值并返回校準(zhǔn)失敗。校準(zhǔn)流程圖如下:圖3. 流程圖初始校準(zhǔn)值選擇從HICK_VALUE_MAX/2開(kāi)始的原因是HICKTRIM的復(fù)位值大致就與HICK_VALUE_MAX/2相當(dāng),這樣更接近頻率漂移的中心點(diǎn),由中間往外輪詢(xún)的查找方式,通常情況下采用這種方式進(jìn)行輪詢(xún)時(shí)可以更快的找出符合要求的校準(zhǔn)值,減少了校準(zhǔn)時(shí)間。
校準(zhǔn)演示說(shuō)明
示例代碼是基于AT-START進(jìn)行編寫(xiě),為了更好的查看到校準(zhǔn)效果,可采用示波器量測(cè)CLKOUT(PA8)的輸出頻率,頻率值為HICK48(是8MHz典型值的6倍時(shí)鐘),代碼中有故意將HICK48調(diào)偏,當(dāng)按下user button后開(kāi)始校準(zhǔn),校準(zhǔn)完畢串口1會(huì)輸出校準(zhǔn)結(jié)果(成功或失?。?,并可通過(guò)CLKOUT量測(cè)到校準(zhǔn)后的HICK48頻率值,示例演示的代碼如下
注意事項(xiàng)
在使用該校準(zhǔn)方法時(shí)需注意以下幾點(diǎn)。1. 系統(tǒng)時(shí)鐘應(yīng)直接或間接的由HICK提供。2. timer計(jì)數(shù)時(shí)鐘頻率越高測(cè)量到的HICK頻率越精確。3. 示例demo所采用的方式是系統(tǒng)時(shí)鐘與timer計(jì)數(shù)時(shí)鐘同頻,如果因應(yīng)用場(chǎng)景需求有修改后不同頻時(shí),需注意調(diào)整頻率對(duì)應(yīng)關(guān)系部分的代碼。4. 在校準(zhǔn)過(guò)程中可能導(dǎo)致主頻或外設(shè)頻率的變化,需注意此時(shí)如有外設(shè)還在運(yùn)行時(shí)可能會(huì)出錯(cuò)。5. 如所使用的系列型號(hào)不支持clkout與timer的輸入通道內(nèi)部連接時(shí),需在配置函數(shù)中增加相應(yīng)的GPIO Pin腳初始化。6. 捕獲次數(shù)宏定義CAPUTURE_NUM需大于等于2。7. 最大誤差宏定義ERROR_VALUE_MAX越大越容易校準(zhǔn)成功,越小越可能校準(zhǔn)失敗。
-
mcu
+關(guān)注
關(guān)注
146文章
17984瀏覽量
366927 -
振蕩器
+關(guān)注
關(guān)注
28文章
4014瀏覽量
140854 -
AT32
+關(guān)注
關(guān)注
1文章
121瀏覽量
2707
發(fā)布評(píng)論請(qǐng)先 登錄
AT32 MCU QSPI應(yīng)用說(shuō)明
AT32 MCU SDIO入門(mén)指南
雅特力攜高性能AT32 MCU精彩亮相全球MCU生態(tài)發(fā)展大會(huì)

雅特力AT32 IDE界面與特色介紹
雅特力攜高性能AT32 MCU精彩亮相D Forum 2021 微控制器論壇

AT32講堂053 | 雅特力AT32F421時(shí)鐘配置

AT32講堂054 | 雅特力AT32F415時(shí)鐘配置

AT32講堂055 | 雅特力AT32F413時(shí)鐘配置

AT32講堂056 | 雅特力AT32F425時(shí)鐘配置

雅特力AT32 MCU與SEGGER攜手合作,開(kāi)發(fā)量產(chǎn)事半功倍
雅特力AT32 MCU的隨機(jī)數(shù)生成

AT32講堂088 | 雅特力AT32F402/F405時(shí)鐘配置

評(píng)論