目錄預(yù)覽
0.前言
2.內(nèi)部 RC 振蕩器校準(zhǔn)
3.內(nèi)部 LSI 振蕩器測量
4.X-CUBE-RC-CALIB 演示
5.結(jié)論
0.前言
STM32U5 系列微控制器內(nèi)嵌兩個(gè)可選為系統(tǒng)時(shí)鐘源的內(nèi)部 RC 振蕩器。它們是 HSI16(高速內(nèi)部)和 MSI(多速內(nèi)部)振蕩器,其可驅(qū)動(dòng)兩個(gè)獨(dú)立的輸出:MSIS(用于系統(tǒng)時(shí)鐘)和 MSIK(用于某些外設(shè)作為內(nèi)核時(shí)鐘)。HSI16 振蕩器的典型頻率為 16MHz。MSI 振蕩器為多速低功耗時(shí)鐘源。STM32U5 系列微控制器(稱為 STM32U5 器件)具有三個(gè)輔助內(nèi)部時(shí)鐘源:
? LSI:32kHz(內(nèi)部低速)
? HSI48:48MHz(內(nèi)部高速),可直接用于 USB、RNG(真隨機(jī)數(shù)發(fā)生器)和 SDMMC(SD/SDIO MMC 卡主機(jī)接口)。
? SHSI:48MHz(+抖動(dòng))內(nèi)部安全 RC 振蕩器,專用于為 SAES 外設(shè)提供時(shí)鐘。
工作溫度對(duì) RC 振蕩器的精度有影響。在 30°C 時(shí),HSI16 精度為±0.5%,MSI 精度為±0.6%,HSI48 精度為±4%。但在–40°C 至125°C 的溫度范圍內(nèi),精度會(huì)降低。為補(bǔ)償溫度對(duì)內(nèi)部 RC 振蕩器精度的影響,STM32U5 器件內(nèi)置一些功能用于校準(zhǔn) HSI16、MSI 和 HSI48 振蕩器及測量 LSI 振蕩器頻率。
當(dāng)系統(tǒng)中有 32.768kHz 的 LSE(低速外部)時(shí)鐘源可用時(shí),MSI 振蕩器的頻率可通過硬件自動(dòng)微調(diào),從而達(dá)到優(yōu)于±0.25%的精度。這種使用 LSE 進(jìn)行的自動(dòng)硬件校準(zhǔn)被稱為 PLL(鎖相環(huán))模式。
本應(yīng)用筆記尚未對(duì) PLL 模式進(jìn)行介紹,僅側(cè)重于用戶微調(diào)。本文檔還詳細(xì)介紹了如何校準(zhǔn) HSI16、MSI 和 HSI48 內(nèi)部 RC 振蕩器,方法如下:
? 基于找到具有最小誤差的頻率的方法
? 基于找到最大允許頻率誤差的方法
? 制定一個(gè)預(yù)先測量值的表然后在其中搜索相應(yīng)變化的方法LSI 振蕩器的測量是通過將振蕩器連接到定時(shí)器輸入捕獲來實(shí)現(xiàn)的。
本應(yīng)用筆記隨附的 X-CUBE-RC-CALIB 擴(kuò)展包包含執(zhí)行這些內(nèi)部振蕩器校準(zhǔn)的源代碼,以及運(yùn)行示例所需的所有嵌入式軟件模塊。
1.STM32U5 系統(tǒng)時(shí)鐘
STM32U5 器件具有下列時(shí)鐘源可用于驅(qū)動(dòng)系統(tǒng)時(shí)鐘:
? HSI16:16 MHz 高速內(nèi)部 RC 振蕩器時(shí)鐘
? HSE:4 至 50 MHz 高速外部振蕩器時(shí)鐘。
? MSI(MSIS):100 kHz 到 48 MHz 多速內(nèi)部 RC 振蕩器時(shí)鐘
? PLL:1 MHz 到 160 MHz 鎖相環(huán)(PLL),由 HSI16、MSI 或 HSE 振蕩器提供時(shí)鐘HSI16 振蕩器的典型頻率為 16 MHz,功耗為 150 μA。
MSI RC 振蕩器基于四個(gè)內(nèi)部 RC 振蕩器:MSIRC0 = 48 MHz、MSIRC1 = 4 MHz、MSIRC2 = 3.072 MHz、MSIRC4 = 400 kHz。每個(gè) MSIRCx 振蕩器具有四個(gè)分頻器:/1、/2、/3 和/4。MSI 共提供了 16 個(gè)頻率范圍,可選擇用于兩種輸出:MSIS(用于系統(tǒng)時(shí)鐘)和 MSIK(用于外設(shè)內(nèi)核時(shí)鐘)。
MSI 的設(shè)計(jì)為工作電流與頻率成正比(請(qǐng)參考產(chǎn)品手冊以獲得 MSI 功耗與所選頻率范圍之間關(guān)系的更詳細(xì)信息),當(dāng) CPU 在低頻運(yùn)行時(shí),可最小化內(nèi)部振蕩器功耗。在從復(fù)位重啟或待機(jī)、關(guān)斷低功耗模式喚醒后,MSIS 時(shí)鐘被用作系統(tǒng)時(shí)鐘。從停機(jī)模式喚醒后,可選擇 MSI 時(shí)鐘而不是 HSI16 作為系統(tǒng)時(shí)鐘。
HSI48 時(shí)鐘信號(hào)由內(nèi)部 48 MHz RC 振蕩器生成,可直接用于 USB、RNG 和 SDMMC。內(nèi)部 RC 振蕩器(HSI16、MSI 和 HSI48)提供了一個(gè)低成本時(shí)鐘源(無需外部元件)。它們還具有比外部振蕩器更快的啟動(dòng)時(shí)間和更低的功耗。可校準(zhǔn) HSI16、MSI 和 HSI48 振蕩器以提高其精度。但即使校準(zhǔn)后,內(nèi)部 RC 振蕩器頻率精度也不如外部晶振或陶瓷諧振器的頻率精度(幾十 ppm)高。
注:若外部振蕩器發(fā)生故障,則 MSI 內(nèi)部 RC 振蕩器還可作為備份時(shí)鐘源(輔助時(shí)鐘)使用。
STM32U5 器件還嵌入了以下次級(jí)時(shí)鐘源(不能用作系統(tǒng)時(shí)鐘):
? LSI:32kHz 低速內(nèi)部 RC,可在停機(jī)和待機(jī)模式下保持運(yùn)行用于 IDWG(獨(dú)立看門狗)、RTC 和 LCD。LSI振蕩器無法校準(zhǔn),但可通過測量來評(píng)估任何頻率偏差(由于溫度和電壓變化)。
? LSE 晶振:32.768 kHz 低速外部晶振 RC,可選地驅(qū)動(dòng) RTC(實(shí)時(shí)時(shí)鐘)
? HSI48:48 MHz 高速內(nèi)部 RC,設(shè)計(jì)用于通過特制 CRS(時(shí)鐘恢復(fù)系統(tǒng))電路為 USB 外設(shè)提供高精度時(shí)鐘。它還可驅(qū)動(dòng) RNG 和 SDMMC。
? MSIK:多速內(nèi)部 RC 振蕩器時(shí)鐘,用于外設(shè)內(nèi)核時(shí)鐘(源自 MSIRCx 振蕩器)
? SHSI:48 MHz 內(nèi)部 RC 振蕩器,專為 SAES 外設(shè)提供時(shí)鐘
2.內(nèi)部 RC 振蕩器校準(zhǔn)
由于生產(chǎn)過程的不同,每個(gè)器件的內(nèi)部 RC 振蕩器的頻率都可能不同。因此,MSI 和 HSI16 RC 振蕩器由意法半導(dǎo)體在 TA = 30 °C 時(shí)進(jìn)行工廠校準(zhǔn)。
復(fù)位后,工廠校準(zhǔn)值自動(dòng)加載到內(nèi)部校準(zhǔn)位中??晌⒄{(diào)內(nèi)部 RC 振蕩器的頻率,以在更寬的溫度和供電范圍內(nèi)達(dá)到更好的精度。這就是微調(diào)位的作用。對(duì)于 HSI16 振蕩器,復(fù)位后校準(zhǔn)值加載于 HSICAL[11:0]中。
使用五個(gè)微調(diào)位 HSITRIM[4:0]進(jìn)行微調(diào)。默認(rèn)微調(diào)值為 16。增加/降低此微調(diào)值會(huì)增加/降低 HSI16 頻率。HSI16 振蕩器微調(diào)步長為 0.18%(約 29 kHz),具體如下:
? 將微調(diào)值寫為 17 至 31 會(huì)增加 HSI16 頻率。
? 將微調(diào)值寫為 0 至 15 會(huì)降低 HSI16 頻率。
? 將微調(diào)值寫為 16,HSI16 頻率會(huì)保持為默認(rèn)值。下圖顯示了隨校準(zhǔn)值變化的 HSI16 振蕩器行為。HSI16 振蕩器頻率隨校準(zhǔn)值增加(校準(zhǔn)值 = 默認(rèn)的 HSICAL[11:0]+ HSITRIM[4:0])。
對(duì)于 MSIRCx 振蕩器(x = 0..3),復(fù)位后校準(zhǔn)值加載于 MSICALx[4:0]位中。五個(gè)微調(diào)位 MSITRIM[4:0]使微調(diào)范圍更寬。校準(zhǔn)基于將默MSICALx[4:0](復(fù)位值)加上 MSITRIMx[4:0]。
結(jié)果存儲(chǔ)在 MSICALx[4:0] = 默認(rèn) MSICALx[4:0] + MSITRIMx[4:0]中。
示例
假設(shè)默認(rèn)的 MSI 校準(zhǔn)值 MSICALx[4:0]為 0x10:
1.將0x010x0F和之間的值寫入 MSITRIM[4:0],會(huì)使校準(zhǔn)值 MSICALx[4:0]處于 MSICALx[4:0] = 0x10 + 0x01= 0x11 到 MSICALx[4:0] = 0x10 + 0x0F = 0x1F 的范圍內(nèi)。這些結(jié)果大于 0x10(默認(rèn)的 MSICALx[4:0]值),因此 MSIRCx 頻率增加 1 步(0x11 - 0x10)至 15 步(0x1F - 0x10)。
2. 將 0x11 和 0x1F 之間的值寫入 MSITRIM[4:0],會(huì)使校準(zhǔn)值 MSICALx[4:0]處于 MSICALx[4:0] = 0x10 + 0x11 =0x01 到 MSICALx[4:0] = 0x10 + 0x1F = 0x0F 的范圍內(nèi)。這些結(jié)果小于 0x10(默認(rèn)的 MSICALx[4:0]值),因此 MSIRCx 頻率降低 1 步(0x01)至 15 步(0x0F)。
3. 在 MSITRIM[4:0]中寫入默認(rèn)校準(zhǔn)值 0x10 會(huì)導(dǎo)致校準(zhǔn)值 MSICALx[4:0]等于MSICALx[4:0] = 0x10 + 0x10 = 0x00,因此 MSIRCx 頻率會(huì)降低 16 步(最低頻率)。
下圖顯示了 MSIRCx 相比于 MSICALx[4:0]在 4MHz 時(shí)的行為。
對(duì)于 HSI48 振蕩器,復(fù)位后校準(zhǔn)值加載于 HSI48CAL[8:0]中。使用六個(gè)微調(diào)位 TRIM[6:0](在 CRS_CR 寄存器中)進(jìn)行微調(diào)。默認(rèn)微調(diào)值為 64。增加/降低此微調(diào)值會(huì)增加/降低 HSI48 頻率。
HSI48 振蕩器微調(diào)步長為 0.12%(約 57 kHz),具體如下:
? 將微調(diào)值寫為 65 至 127 會(huì)增加 HSI48 頻率。
? 將微調(diào)值寫為 0 至 63 會(huì)降低 HSI48 頻率。
? 將微調(diào)值寫為 64,HSI48 頻率會(huì)保持為默認(rèn)值。
下圖顯示了隨校準(zhǔn)值變化的 HSI48 振蕩器行為。HSI48 振蕩器頻率隨校準(zhǔn)值增加(校準(zhǔn)值 = 默認(rèn)的 HSI48CAL[8:0]+ TRIM[6:0])。
原文標(biāo)題:應(yīng)用筆記|如何在 STM32U5 系列上校準(zhǔn)內(nèi)部 RC 振蕩器
文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
單片機(jī)
+關(guān)注
關(guān)注
6039文章
44579瀏覽量
636441 -
STM32
+關(guān)注
關(guān)注
2270文章
10910瀏覽量
356582
原文標(biāo)題:應(yīng)用筆記|如何在 STM32U5 系列上校準(zhǔn)內(nèi)部 RC 振蕩器
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論