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

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

AT32講堂053 | 雅特力AT32F421時鐘配置

AT32講堂054 | 雅特力AT32F415時鐘配置

AT32講堂055 | 雅特力AT32F413時鐘配置

AT32講堂056 | 雅特力AT32F425時鐘配置

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

AT32講堂088 | 雅特力AT32F402/F405時鐘配置

評論