女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CW32L083如何實現AUTOTRIM時鐘校準?

jf_pJlTbmA9 ? 來源:武漢芯源半導體 ? 作者:武漢芯源半導體 ? 2023-11-07 17:17 ? 次閱讀

MCU中的HSIOSC和LSI時鐘信號是通過內部RC振蕩器產生的,該時鐘信號可能會受到外界因素比如溫度等的影響,使其頻率在一定范圍內產生誤差。CW32L083可以通過AUTOTRIM的時鐘校準定時器模式來對LSI和HSIOSC進行自動實時時鐘校準,獲得精度更高的時鐘信號。

HSIOSC時鐘校準模式

設置 AUTOTRIM_CR.MD 為 0x00,使定時器工作于 HSIOSC 校準模式。該模式支持自動實時校準HSIOSC的輸出頻率,使 HSIOSC 輸出頻率的精度不再受環境變化影響。

HSIOSC 時鐘校準,需要向定時器提供一個精準的低頻參考時鐘,其來源可以是 LSE 或外部 ETR 引腳輸入的低速精準時鐘信號,通過控制寄存器 AUTOTRIM_CR 的 SRC 位域進行選擇。

HSIOSC 校準模式的功能框圖如下圖所示:

poYBAGMj5iyAHda3AACK8WZRn2U332.jpg

設置 AUTOTRIM_CR.AUTO 為 1 使能自動校準,設置 AUTOTRIM_CR.EN 為1 使能定時器,開始自動校準流程。自動校準開始工作后,計數值寄存器AUTOTRIM_CNT 在每個 GCLK 時鐘周期內對 HSIOSC 時鐘 TCLK 從重載值 ARR 開始遞減計數,計數到 0 后開始遞增計數。當計數器已運行 1.5 倍 ARR 周期,計數器停止運行,同時 AUTOTRIM_ISR.MISS 標志位被硬件置 1,表示計數失敗。每當 GCLK 時鐘上升沿到達時,計數器重新開始從 ARR 遞減計數。

如果 GCLK 時鐘周期內,計數器的計數值大于誤差允許值 AUTOTRIM_FLIM,寄存器TrimCode 會自動調整,直到計數器的計數值小于誤差允許值 AUTOTRIM_FLIM,同時 AUTOTRIM_ISR.OK 標志位會被硬件置 1,表示校準精度已達標,此時可讀取 TrimCode 寄存器并寫入 SYSCTRL_HSI.TRIM,以校準 HSIOSC 時鐘頻率。

TrimCode 寄存器最大可調整為 0x1FF,故 TrimCode 值寫入 SYSCTRL_HSI.TRIM 時,需根據 TRIM 位域的初始校 準值寫入最高 2bit。代碼示例如下:

CW_SYSCTRL->HSI = (CW_SYSCTRL->HSI 0xFE00) | CW_AUTOTRIM->TVAL;

誤差允許值 FLIM 在設置重載值 ARR 時自動配置,校準精度為 0.4%,用戶不可寫入。重載寄存器 AUTOTRIM_ARR 設置公式如下:

ARR = TCLK×2PRS/RCLK-1

其中,RCLK 為參考時鐘源,PRS 為預分頻系數,TCLK 為計數時鐘源 HSIOSC 時鐘,這一部分是需要我們去配置的。

例:當參考時鐘源 RCLK 為 LSE(時鐘頻率為 32768Hz),預分頻系數 PRS 為 0x1 時,校準 HSIOSC 時鐘頻率為 48MHz,計算

ARR = 48000000×21 /32768-1 = 2928.6875

最接近的整數是:2929(0xB71)

即需要設置 AUTOTRIM_ARR 為 0xB71。

HSIOSC時鐘校準編程示例

通過上節的模式設置介紹我們可以根據其配置AUTOTRIM的HSIOSC的實時時鐘校準模式,HSIOSC 時鐘校準流程如下,當選擇參考時鐘源為 LSE 時,步驟 1 和步驟 2 不需要執行:

步驟 1:設置外設時鐘使能控制寄存器 SYSCTRL_AHBEN 的相關位為 1,使能AUTOTRIM_ETR 對應 GPIO 端口的配置時鐘及工作時鐘;

步驟 2:設置 GPIO 復用功能寄存器 GPIOx_AFRH 和 GPIOx_AFRL 的相關位,配置對應引腳為 AUTOTRIM 定時器的 AUTOTRIM_ETR 功能;

步驟 3:設置外設時鐘使能控制寄存器 SYSCTRL_APBEN2.AUTOTRIM 為 1,打開 AUTOTRIM 模塊的配置時鐘;

步驟 4:設置 AUTOTRIM_CR.MD 為 0x00,使定時器工作于 HSIOSC 時鐘校準模式;

步驟 5:配置控制寄存器 AUTOTRIM_CR.OST,選擇實時校準模式或單次校準模式;

步驟 6:配置控制寄存器 AUTOTRIM_CR.SRC,選擇 AUTOTRIM 參考時鐘源為LSE;

步驟 7:配置控制寄存器 AUTOTRIM_CR.PRS,選擇 AUTOTRIM 參考時鐘分頻系數;

步驟 8:根據上節HSIOSC時鐘校準模式ARR 配置公式,設置重載值寄存器 AUTOTRIM_ARR,自動配置 校準精度為 0.4%;

步驟 9:設置 AUTOTRIM_CR.AUTO 為 1,使能自動校準;

步驟 10:設置 AUTOTRIM_CR.EN 為 1,使能定時器,開始自動校準;

步驟 11:查詢等待 AUTOTRIM_ISR.END 和 AUTOTRIM_ISR.OK 標志位置 1,自動校準完成且精度達標;

步驟 12:讀取 TrimCode 寄存器,并將 TrimCode 值寫入 SYSCTRL_HSI.TRIM。

代碼示例:

CW_SYSCTRL->HSI = (CW_SYSCTRL->HSI 0xFE00) | CW_AUTOTRIM->TVAL;

具體的寄存器配置可以參考CW32L083用戶手冊的時鐘校準定時器(AUTOTRIM)章節。在上述的一系列校準步驟配置完之后,我們就可以通過示波器或者萬用表來讀取開發板的HSIOSC的頻率輸出,會發現在不同的溫度影響下,MCU會自動校準HSIOSC的時鐘頻率。通過對比會發現,用AUTOTRIM自動校準模式之后的HSIOSC會比沒有用AUTOTRIM的HSIOSC的精度更高,誤差更小。

LSI時鐘校準

設置 AUTOTRIM_CR.MD 為 0x01,使定時器工作于 LSI 校準模式。該模式支持自動實時校準 LSI 的輸出頻率,使 LSI 輸出頻率的精度不再受環境變化影響。

LSI 時鐘校準,需要向定時器提供一個精準的高頻計數時鐘,其來源可以是 HSE 或外部 ETR 引腳輸入的高速精準時鐘信號,通過控制寄存器 AUTOTRIM_CR 的 SRC 位域進行選擇。

LSI校準模式的功能框圖如下圖所示:

pYYBAGMj5iyAf265AABICTXJh8Y768.jpg

設置 AUTOTRIM_CR.AUTO 為 1 使能自動校準,設置 AUTOTRIM_CR.EN 為 1 使能定時器,開始自動校準流程。

自動校準開始工作后,計數值寄存器 AUTOTRIM_CNT 在每個 GCLK 時鐘周期內對計數時鐘 TCLK 從重載值 ARR 開始遞減計數,計數到0后開始遞增計數。當計數器已運行1.5倍ARR 周期,計數器停止運行,同時 AUTOTRIM_ISR.MISS 標志位被硬件置1,表示計數失敗。每當 GCLK 時鐘上升沿到達時,計數器重新開始從 ARR 遞減計數。

如果 GCLK 時鐘周期內,計數器的計數值大于誤差允許值 AUTOTRIM_FLIM,則寄存器TrimCode會自動調整,直到計數器的計數值小于誤差允許值 AUTOTRIM_FLIM,同時 AUTOTRIM_ISR.OK 標志位會被硬件置 1,表示校準精度 已達標,此時可讀取 TrimCode 寄存器并寫入 SYSCTRL_LSI.TRIM,以校準 LSI 時鐘頻率。具體的代碼配置可以參考下節的步驟12的代碼示例。

TrimCode 寄存器最大可調整為0x1FF,故 TrimCode 值寫入 SYSCTRL_LSI.TRIM 時,需根據 TRIM 位域的初始校 準值寫入最高 1bit。

代碼示例如下:

CW_SYSCTRL->LSI = (CW_SYSCTRL->LSI 0xFE00) | CW_AUTOTRIM->TVAL;

誤差允許值 FLIM 在設置重載值 ARR 時自動配置,校準精度為 0.4%,用戶不可寫入。重載寄存器 AUTOTRIM_ARR 設置公式如下:

ARR = TCLK×2PRS/RCLK-1

其中,RCLK 為 LSI 時鐘,PRS 為預分頻系數,TCLK 為計數時鐘源。

例:當計數時鐘源 TCLK 為 HSE(時鐘頻率為 16MHz),預分頻系數 PRS 為 0x1 時,校準 LSI 時鐘頻率為 32kHz,計算

ARR = 16000000×21 /32000-1 = 999

即需要設置 AUTOTRIM_ARR 為 0x3E7。

LSI時鐘校準編程示例

通過上節的模式設置介紹我們可以根據其配置AUTOTRIM的LSI的實時時鐘校準模式,LSI 時鐘校準流程如下,當選擇計數時鐘源為 HSE 時,步驟 1 和步驟 2 不需要執行:

步驟 1:設置外設時鐘使能控制寄存器 SYSCTRL_AHBEN 的相關位為 1,使能 AUTOTRIM_ETR 對應 GPIO 端口的 配置時鐘及工作時鐘;

步驟 2:設置 GPIO 復用功能寄存器 GPIOx_AFRH 和 GPIOx_AFRL 的相關位,配置對應引腳為 AUTOTRIM 定時器 的 AUTOTRIM_ETR 功能;

步驟 3:設置外設時鐘使能控制寄存器 SYSCTRL_APBEN2.AUTOTRIM 為 1,打開 AUTOTRIM 模塊的配置時鐘;

步驟 4:設置 AUTOTRIM_CR.MD 為 0x01,使定時器工作于 LSI 時鐘校準模式;

步驟 5:配置控制寄存器 AUTOTRIM_CR.OST,選擇實時校準模式或單次校準模式;

步驟 6:配置控制寄存器 AUTOTRIM_CR.SRC,選擇 AUTOTRIM 計數時鐘源HSE;

步驟 7:配置控制寄存器 AUTOTRIM_CR.PRS,選擇 AUTOTRIM 參考時鐘分頻系數;

步驟 8:根據 11.3.3 LSI 時鐘校準小節 ARR 配置公式,設置重載值寄存器 AUTOTRIM_ARR,自動配置校準精度 為 0.4%;

步驟 9:設置 AUTOTRIM_CR.AUTO 為 1,使能自動校準;

步驟 10:設置 AUTOTRIM_CR.EN 為 1,使能定時器,開始自動校準;

步驟 11:查詢等待 AUTOTRIM_ISR.END 和 AUTOTRIM_ISR.OK 標志位置 1,自動校準完成且精度達標;

步驟 12:讀取 TrimCode 寄存器,并將 TrimCode 值寫入 SYSCTRL_LSI.TRIM。

代碼示例:

CW_SYSCTRL->LSI = (CW_SYSCTRL->LSI 0xFE00) | CW_AUTOTRIM->TVAL

來源:武漢芯源半導體


審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17821

    瀏覽量

    359938
  • 時鐘
    +關注

    關注

    11

    文章

    1878

    瀏覽量

    132807
  • 定時器
    +關注

    關注

    23

    文章

    3285

    瀏覽量

    117117
  • CW32
    +關注

    關注

    1

    文章

    242

    瀏覽量

    1084
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于CW32L083的線控器方案設計

    基于武漢芯源推出的CW32L083設計的空調線控器產品.
    的頭像 發表于 06-25 14:23 ?43w次閱讀
    基于<b class='flag-5'>CW32L083</b>的線控器方案設計

    CW32L083 RTC初始化設置

    介紹CW32L083的RTC初始化設置
    的頭像 發表于 06-24 10:16 ?1956次閱讀
    <b class='flag-5'>CW32L083</b> RTC初始化設置

    基于CW32L083設計的超低功耗溫濕度計

    基于CW32L083設計的超低功耗溫濕度計,可以用電池供電,實現數年超長工作時間。
    的頭像 發表于 06-25 12:08 ?2.7w次閱讀
    基于<b class='flag-5'>CW32L083</b>設計的超低功耗溫濕度計

    基于CW32L083的空調遙控器方案設計

    基于武漢芯源半導體推出的CW32L083而設計的的空調遙控器方案
    的頭像 發表于 06-21 16:03 ?1779次閱讀
    基于<b class='flag-5'>CW32L083</b>的空調遙控器方案設計

    移植RT-Thread nano到CW32L083

    移植RT-Thread Nano到CW32L083開發板上,并成功運行。
    的頭像 發表于 07-03 09:04 ?2.3w次閱讀
    移植RT-Thread nano到<b class='flag-5'>CW32L083</b>

    CW32L083串口中斷+定時器實現不定長數據接收

    CW32L083 用串口中斷加定時器中斷實現串口的不定長數據的接收,特別適用于AT指令的接收。
    的頭像 發表于 07-12 09:00 ?2504次閱讀
    <b class='flag-5'>CW32L083</b>串口中斷+定時器<b class='flag-5'>實現</b>不定長數據接收

    [技術手冊] CW32L083數據手冊

    CW32L083數據手冊,PSMCU0116.pdf,Rev1.2
    發表于 05-31 16:13

    [技術手冊] CW32L083用戶手冊

    CW32L083用戶手冊
    發表于 06-02 15:41

    武漢芯源Cortex-M0+ 32位低功耗MCU CW32L083系列產品介紹

    列表02 CW32L083系列功能優勢1.深度休眠模式0.6uACW32L083系列產品在深度休眠模式下電流只有0.6uA(所有時鐘關閉,上電復位有效,IO狀態保持,IO中斷有效,所有寄存器、RAM
    發表于 08-24 09:12

    CW32L083系列MCU系統時鐘詳解

    性能,有的外設需要低速時鐘降低功耗或提高抗干擾能力,因此單片機采用多種時鐘源來解決此問題。下面將詳細介紹如何配置CW32L083產品的系統時鐘CW
    發表于 10-25 13:32

    CW32L083產品介紹

    CW32L083是一款基于eFlash的單芯片低功耗微控制器,集成了ARM?Cortex?-M0+ 核心,主頻高達64MHz,高速嵌入式存儲器(高達256K字節的FLASH和 高達24K字節
    發表于 09-14 06:41

    CW32L083段碼屏驅動

    CW32L083開發板上有8個段碼LCD顯示,使其顯示為0-9數字。
    的頭像 發表于 06-18 09:13 ?18.1w次閱讀
    <b class='flag-5'>CW32L083</b>段碼屏驅動

    CW32L083系列MCU系統時鐘詳解

    性能,有的外設需要低速時鐘降低功耗或提高抗干擾能力,因此單片機采用多種時鐘源來解決此問題。下面將詳細介紹如何配置CW32L083產品的系統時鐘CW
    的頭像 發表于 10-25 13:35 ?1148次閱讀
    <b class='flag-5'>CW32L083</b>系列MCU系統<b class='flag-5'>時鐘</b>詳解

    CW32L083實現SHT30驅動

    CW32L083驅動SHT30,并顯示到LCD屏上。
    的頭像 發表于 06-22 09:57 ?3701次閱讀
    <b class='flag-5'>CW32L083</b><b class='flag-5'>實現</b>SHT30驅動

    CW32L083不同主頻功耗測試

    頻率固定為48MHz,頻率精度低于HSE時鐘。RC振蕩器輸出時鐘的頻率受芯片加工過程、工作電壓、環境溫度等因素影響,CW32L083提供了HSIOSC時鐘頻率
    的頭像 發表于 06-27 16:21 ?944次閱讀
    <b class='flag-5'>CW32L083</b>不同主頻功耗測試