DAVE4中的時鐘配置與簡單原理介紹
1. 新建一個DAVE CE工程并添加CLOCK_XMC4 APPDAVE軟件使用APP組件的方式幫助嵌入式程序員快速實現(xiàn)產(chǎn)品,其APP經(jīng)過多代更新驗證已經(jīng)趨于穩(wěn)定。任何嵌入式系統(tǒng)都需要配置系統(tǒng)時鐘,
1. 新建一個DAVE CE工程并添加CLOCK_XMC4 APP
DAVE軟件使用APP組件的方式幫助嵌入式程序員快速實現(xiàn)產(chǎn)品,其APP經(jīng)過多代更新驗證已經(jīng)趨于穩(wěn)定。任何嵌入式系統(tǒng)都需要配置系統(tǒng)時鐘,本文將介紹如何在DAVE軟件中使用官方的APP組件CLOCK_XMC4來設(shè)置系統(tǒng)時鐘。
2. CLOCK_XMC4 APP的功能和使用
CLOCK_XMC4是一個可用于設(shè)置單片機上各種時鐘源的APP,具有以下主要功能:
1. 設(shè)置單片機上的各種時鐘源。
2. 設(shè)置內(nèi)部快速振蕩器的校驗方式。
3. 配置系統(tǒng)鎖相環(huán)PLL的參數(shù)。
4. 可選的時鐘分頻輸出。
5. 生成名為SystemCoreClockSetup()的函數(shù)供上層應(yīng)用調(diào)用。
3. SystemInit函數(shù)和SystemCoreClockSetup函數(shù)
默認情況下,SystemInit函數(shù)會調(diào)用一個weak函數(shù)SystemCoreClockSetup來初始化系統(tǒng)時鐘,該函數(shù)實現(xiàn)在system_XMC4800.c文件中。但是,一旦使用了CLOCK_XMC4這個APP,SystemInit將會改成調(diào)用clock_xmc_conf.c文件中的SystemCoreClockSetup函數(shù)。
4. CLOCK_XMC4 APP的底層實現(xiàn)原理
CLOCK_XMC4實質(zhì)上是使用芯片中的SCU(System Control Unit)模塊來產(chǎn)生各種需要的時鐘,如系統(tǒng)時鐘、外設(shè)時鐘、備份時鐘等。此外,該APP還使用一個GPIO來監(jiān)視一路輸出到外部的時鐘。時鐘初始化序列按照時序圖來初始化時鐘樹,需要特別注意的是,只有當內(nèi)部高速晶振的校準模式設(shè)置為使用STDBY時鐘為基準來校準時,才會嘗試開啟外部的ULP時鐘電路。
5. 使用CLOCK_XMC4 APP配置系統(tǒng)時鐘
雙擊時鐘模塊,打開配置界面,在Clock Control Settings選項卡中可以展示配置結(jié)束后系統(tǒng)中各個時鐘的結(jié)果。圖形界面一目了然,大大減少了查閱數(shù)據(jù)手冊和配置寄存器的工作量,讓應(yīng)用層的實現(xiàn)邏輯更為簡單。
6. Clock Generation Settings選項卡
在Clock Generation Settings選項卡中,可以進行以下配置:
1. Operating mode:選擇時鐘來源,可以使用外部晶振、外部時鐘輸入或者內(nèi)部快速振蕩器。
2. Calibration:設(shè)置內(nèi)部快速振蕩器的精度,可以使用出廠校準或者使用STDBY時鐘來校準。
3. Enable main PLL:選擇是否打開主鎖相環(huán)。
4. PLL clock source:選擇主鎖相環(huán)的時鐘輸入源。
5. PLL operating mode:配置是否旁路掉芯片內(nèi)部的VCO。
6. Enable USB PLL:選擇是否打開USB的鎖相環(huán)。
7. Standby Clock Generation Settings選項卡
在Standby Clock Generation Settings選項卡中,可以配置STDBY和RTC的時鐘輸入源,可以選擇尾部超低功耗的晶振或者內(nèi)部的低精度振蕩器。
8. Clock Selection Settings選項卡
在Clock Selection Settings選項卡中,將配置系統(tǒng)中需要的各種時鐘,包括時鐘源和分頻系數(shù)。
9. Event Settings選項卡
在Event Settings選項卡中,可以配置是否需要監(jiān)視幾個特別重要的時鐘,被監(jiān)視的時鐘一旦發(fā)生故障將觸發(fā)不可屏蔽中斷,用戶需要在NMI_Handler中斷函數(shù)中進行處理。
10. 生成代碼
點擊生成代碼,DAVE軟件將根據(jù)前面的配置自動生成代碼,最主要的是生成SystemCoreClockSetup函數(shù),該函數(shù)會覆蓋新建工程時自帶的同名weak函數(shù)。