時(shí)鐘是芯片正確高效運(yùn)行的基礎(chǔ),正確的時(shí)鐘配置是芯片能正確運(yùn)行的必要條件,其重要性不言而喻。AT32各系列產(chǎn)品的時(shí)鐘配置部分可能存在細(xì)微的差異和需要注意的事項(xiàng),本文檔就著重針對(duì)各系列的情況來(lái)詳細(xì)介紹如何結(jié)合雅特力提供的V2.x.x的板級(jí)支持包(BSP)來(lái)配置時(shí)鐘。以下介紹時(shí)鐘配置的方法主要分兩種:1、以手動(dòng)編寫(xiě)代碼調(diào)用BSP中提供的驅(qū)動(dòng)函數(shù)接口來(lái)進(jìn)行時(shí)鐘配置。2、采用時(shí)鐘工具來(lái)配置并生成相應(yīng)的源碼文件。
時(shí)鐘樹(shù)
在進(jìn)行時(shí)鐘配置之前,應(yīng)充分了解對(duì)應(yīng)芯片的時(shí)鐘樹(shù)結(jié)構(gòu),這樣在進(jìn)行時(shí)鐘配置時(shí)才會(huì)游刃有余。對(duì)于系統(tǒng)時(shí)鐘頻率及路徑的配置我們需要關(guān)注時(shí)鐘源、倍頻及系統(tǒng)時(shí)鐘部分。類(lèi)似如下圖:圖1. 時(shí)鐘框圖可由圖中得到以下幾個(gè)關(guān)鍵信息:1) SCLKSEL:系統(tǒng)時(shí)鐘可以由HEXT、PLLCLK、HICK三大時(shí)鐘源提供。2) HEXT:HEXT是外部高速時(shí)鐘,其可以外接范圍是4~25 MHz的晶振或時(shí)鐘源。3) HICK:HICK RC是內(nèi)部高速振蕩器,頻率為48MHz。HICK時(shí)鐘由內(nèi)部振蕩器給出,但在初始情況下由HICKDIV控制并默認(rèn)6分頻后為8MHz,亦可配置為不分頻,保持48MHz的頻率。4) PLLCLK:PLL時(shí)鐘=PLL輸入時(shí)鐘*PLL倍頻系數(shù)。5) PLL輸入時(shí)鐘:PLL的輸入時(shí)鐘由PLLRCS及PLLHEXTDIV共同決定,其細(xì)分可分為三個(gè)來(lái)源:HICK 4MHz、HEXT和HEXTDIV,HEXTDIV由HEXT時(shí)鐘2分頻。
代碼配置解析
以下將以庫(kù)函數(shù)接口為核心來(lái)對(duì)時(shí)鐘配置流程和方法進(jìn)行說(shuō)明。
函數(shù)接口
各系列產(chǎn)品對(duì)應(yīng)提供的BSP中對(duì)硬件的時(shí)鐘設(shè)置部分已封裝好接口函數(shù)以供調(diào)用,以下羅列出時(shí)鐘配置常用的函數(shù)接口,各函數(shù)的具體參數(shù)及返回值類(lèi)型等請(qǐng)參考at32wb415_crm.c/.h文件。
時(shí)鐘配置解析
按常規(guī)應(yīng)用來(lái)講解時(shí)鐘配置流程,其內(nèi)容可大致分為如下步驟:圖2. 時(shí)鐘配置流程圖
一、復(fù)位(CRM Reset)
首先按規(guī)范流程應(yīng)復(fù)位CRM配置參數(shù),其主要是將系統(tǒng)時(shí)鐘切換到HICK,其余的系統(tǒng)時(shí)鐘配置寄存器寫(xiě)入默認(rèn)值,待后續(xù)進(jìn)行新配置參數(shù)的寫(xiě)入。函數(shù)調(diào)用的代碼實(shí)現(xiàn)如下:
二、Flash等待周期(Set Flash Wait Cycle)
AT32WB415片上采用的是嵌入式Flash,當(dāng)運(yùn)行在不同的主頻下時(shí)需對(duì)應(yīng)設(shè)定Flash等待周期。flash等待周期與運(yùn)行主頻關(guān)系如下:函數(shù)調(diào)用的代碼實(shí)現(xiàn)如下:
三、時(shí)鐘源配置(Clock Source Configuration)
與系統(tǒng)時(shí)鐘相關(guān)的高速時(shí)鐘源主要包括HEXT和HICK,PLL也是使用以上時(shí)鐘源來(lái)進(jìn)行倍頻。需要在配置使能PLL前將所使用的PLL參考時(shí)鐘源開(kāi)啟并等待其穩(wěn)定。
- HEXT
外部高速時(shí)鐘如采用外接有源時(shí)鐘的方式時(shí),可開(kāi)啟旁路模式來(lái)進(jìn)行使用,采用晶振時(shí),不能開(kāi)啟旁路模式,旁路模式應(yīng)在外部高速時(shí)鐘源使能前進(jìn)行設(shè)定,其默認(rèn)情況為關(guān)閉。旁路模式使能代碼實(shí)現(xiàn)如下:使能HEXT時(shí)鐘源并等待HEXT時(shí)鐘穩(wěn)定,代碼實(shí)現(xiàn)如下:
- HICK
內(nèi)部高速時(shí)鐘是由芯片內(nèi)部振蕩器提供,使能HICK時(shí)鐘源并等待HICK時(shí)鐘穩(wěn)定,代碼實(shí)現(xiàn)如下:
四、PLL配置(PLL Configuration)
PLL配置主要包括:PLL時(shí)鐘源、PLL倍頻系數(shù)、PLL倍頻頻率范圍等的設(shè)置。倍頻時(shí)鐘公式為:PLLCLK=PLL輸入時(shí)鐘*PLL倍頻系數(shù)。
- PLL時(shí)鐘源
PLL時(shí)鐘源細(xì)分有三個(gè)來(lái)源:1、HICK(4MHz),2、HEXT,3、HEXT分頻時(shí)鐘,PLL時(shí)鐘源應(yīng)在PLL配置使能前開(kāi)啟并等待穩(wěn)定。以上PLL時(shí)鐘源在crm_pll_config函數(shù)中對(duì)應(yīng)的參數(shù)定義如下:當(dāng)選擇PLL時(shí)鐘源為CRM_PLL_SOURCE_HEXT_DIV時(shí),HEXT的分頻系數(shù)默認(rèn)為2分頻。
- PLL倍頻系數(shù)
倍頻系數(shù)為2~64倍可選,但應(yīng)該注意最高主頻限制,以此按實(shí)際情況來(lái)合適選擇倍頻系數(shù),如8倍頻使用參數(shù)CRM_PLL_MULT_8。當(dāng)PLL參數(shù)設(shè)置完成后,即可開(kāi)啟PLL并等待PLL穩(wěn)定。示例:外部時(shí)鐘晶振8MHz,采用HEXT2分頻時(shí)鐘作為PLL時(shí)鐘源,PLLCLK倍頻到144MHz的代碼實(shí)現(xiàn)如下:
五、總線(xiàn)分頻(Set Bus Frequency Division)
總線(xiàn)分頻包含SCLK到AHBCLK分頻、AHBCLK到APB1CLK分頻、AHBCLK到APB2CLK分頻。AHB總線(xiàn)1分頻、APB1/APB2總線(xiàn)2分頻的代碼實(shí)現(xiàn)如下:
六、切換系統(tǒng)時(shí)鐘(Switch System Clock)
系統(tǒng)時(shí)鐘來(lái)源主要有三個(gè):HICK、HEXT、PLLCLK。在切換系統(tǒng)時(shí)鐘到如上時(shí)鐘源時(shí)應(yīng)提前確保對(duì)應(yīng)時(shí)鐘源已穩(wěn)定。
- 順滑模式
時(shí)鐘順滑模式是為了確保整個(gè)系統(tǒng)時(shí)鐘切換過(guò)程的穩(wěn)定而設(shè)計(jì),當(dāng)即將切換為系統(tǒng)時(shí)鐘的目標(biāo)時(shí)鐘頻率大于108MHz時(shí)應(yīng)開(kāi)啟時(shí)鐘順滑模式,所以其主要應(yīng)用對(duì)象為PLLCLK用作系統(tǒng)時(shí)鐘時(shí)的場(chǎng)景。通常使用方法是在系統(tǒng)時(shí)鐘切換前開(kāi)始,切換成功后關(guān)閉。代碼實(shí)現(xiàn)如下:
- HICK系統(tǒng)時(shí)鐘
內(nèi)部高速時(shí)鐘在系統(tǒng)復(fù)位重新運(yùn)行時(shí)默認(rèn)作為系統(tǒng)時(shí)鐘,后期代碼進(jìn)行設(shè)定時(shí),可有兩種頻率值來(lái)進(jìn)行設(shè)定(8MHz和48MHz)。如圖1所述HICK默認(rèn)情況下用的是8MHz,可配置為48MHz。HICK8MHz用作系統(tǒng)時(shí)鐘的代碼實(shí)現(xiàn)如下:HICK 48MHz用作系統(tǒng)時(shí)鐘的代碼實(shí)現(xiàn)如下:
- HEXT系統(tǒng)時(shí)鐘
外部高速時(shí)鐘用作系統(tǒng)時(shí)鐘時(shí),其系統(tǒng)時(shí)鐘頻率以實(shí)際使用的外部時(shí)鐘頻率為準(zhǔn),范圍為4~25 MHz。HEXT用作系統(tǒng)時(shí)鐘的代碼實(shí)現(xiàn)如下:
- PLLCLK系統(tǒng)時(shí)鐘
PLLCLK用作系統(tǒng)時(shí)鐘時(shí),其系統(tǒng)時(shí)鐘頻率以實(shí)際的PLL倍頻結(jié)果為準(zhǔn)。其最高頻率應(yīng)滿(mǎn)足芯片規(guī)格為基礎(chǔ)。PLLCLK用作系統(tǒng)時(shí)鐘的代碼實(shí)現(xiàn)如下:
七、更新核心頻率(Update Core Frequency)
提供的BSP中,其代碼框架內(nèi)保留了一個(gè)表示系統(tǒng)核心頻率的參數(shù)值system_core_clock,其保存的是CPU核心的運(yùn)行頻率值,應(yīng)該在每次系統(tǒng)時(shí)鐘配置完成后來(lái)進(jìn)行更新。為的是在整個(gè)代碼框架下,各外設(shè)驅(qū)動(dòng)的頻率配置能很快獲取到當(dāng)前核心運(yùn)行頻率值并使用。代碼實(shí)現(xiàn)如下:
時(shí)鐘配置示例
以下將以完整的時(shí)鐘配置流程來(lái)進(jìn)行說(shuō)明,示例:由8MHz外部時(shí)鐘晶振作為時(shí)鐘源,其2分頻路徑經(jīng)PLL倍頻到144MHz并用做系統(tǒng)時(shí)鐘,AHB采用1分頻,APB1/APB2采用2分頻。函數(shù)system_clock_config代碼實(shí)現(xiàn)如下:
時(shí)鐘工具
時(shí)鐘配置工具是雅特力科技為方便對(duì)AT32系列MCU進(jìn)行時(shí)鐘配置而開(kāi)發(fā)的一個(gè)圖形化配置工具,其主旨是使用戶(hù)清晰了解時(shí)鐘路徑和配置出期望的時(shí)鐘頻率并生成源碼文件。
環(huán)境要求
- 軟件要求
需要Windows7及以上操作系統(tǒng)支持。
安裝
- 軟件安裝
本軟件不需要安裝,只需直接運(yùn)行可執(zhí)行程序AT32_New_Clock_Configuration.exe。
功能介紹
本章節(jié)將介紹此工具的基本操作,其主要的啟動(dòng)界面和配置界面如下所示圖3. 啟動(dòng)界面圖4. 配置界面
菜單欄
菜單欄內(nèi)容如圖所示:圖5. 菜單欄
- “項(xiàng)目”(Project)菜單:新建:新建時(shí)鐘配置項(xiàng)目打開(kāi):打開(kāi)已存在的配置項(xiàng)目保存:保存已打開(kāi)的配置項(xiàng)目
- “語(yǔ)言”(Language)菜單:English:選擇English作為顯示語(yǔ)言簡(jiǎn)體中文:選擇簡(jiǎn)體中文作為顯示語(yǔ)言
- “生成代碼”(General code)菜單:當(dāng)在對(duì)應(yīng)型號(hào)的操作配置界面將所期望的時(shí)鐘路徑和時(shí)鐘頻率配置完成之后,可點(diǎn)擊“生成代碼”菜單來(lái)選擇源碼文件的存儲(chǔ)路徑并生成相應(yīng)的源碼文件。
- “幫助”(Help)菜單:新版本下載:聯(lián)網(wǎng)進(jìn)行新版本下載版本:查看當(dāng)前版本
新建配置項(xiàng)目
雙擊打開(kāi)時(shí)鐘配置工具,可看到圖示的啟動(dòng)界面,可點(diǎn)擊“項(xiàng)目”菜單-->“新建”,進(jìn)行配置項(xiàng)目的新建,在新建配置項(xiàng)目的過(guò)程中需要對(duì)芯片的系列所屬進(jìn)行選擇,操作方法如下圖所示圖6. MCU選擇界面MCU系列的選擇,可點(diǎn)擊下拉框來(lái)進(jìn)行選擇,當(dāng)選擇好MCU后點(diǎn)擊“確定”可進(jìn)入到時(shí)鐘配置界面。
配置界面的使用
配置界面主要用來(lái)進(jìn)行時(shí)鐘路徑及參數(shù)的配置,以下的介紹將以AT32WB415系列作為示例來(lái)展開(kāi)進(jìn)行,其余系列的配置方法與此類(lèi)似。整個(gè)配置界面主要可以分為四個(gè)大塊,如下圖所示圖7. 配置界面框架1. 標(biāo)題部分:用于展示當(dāng)前配置項(xiàng)目所選擇的MCU系列。2. 配置部分:用于對(duì)時(shí)鐘路徑和時(shí)鐘參數(shù)進(jìn)行選擇和配置,以達(dá)到期望的應(yīng)用需求。3. 輸出部分:用于時(shí)鐘輸出(CLKOUT)的配置。4. 在SCLK欄也可在選中PLL為系統(tǒng)時(shí)鐘時(shí)作為輸入框,可輸入期望的系統(tǒng)時(shí)鐘頻率來(lái)反向自動(dòng)配置出倍頻參數(shù)。5. 結(jié)果部分:用于顯示當(dāng)前外設(shè)所使用的時(shí)鐘頻率及總線(xiàn)上的外設(shè)。接下來(lái)就著重介紹一下配置部分的使用。配置部分的流程界面是對(duì)應(yīng)著MCU時(shí)鐘樹(shù)來(lái)進(jìn)行的,各系列MCU的此部分可能存在著差異,但使用方式大同小異。時(shí)鐘路徑的配置可按流程對(duì)各開(kāi)關(guān)進(jìn)行點(diǎn)選來(lái)進(jìn)行選擇,配置部分如下圖所示,將逐個(gè)流程點(diǎn)的功能及其注意事項(xiàng)進(jìn)行介紹。圖8. 時(shí)鐘配置框1. ertc使能:ertc時(shí)鐘代碼配置的使能下拉框。2. ertcsel:點(diǎn)選框,ertc時(shí)鐘源選擇。當(dāng)ertc使能開(kāi)啟后,此點(diǎn)選框可配置。3. lext bypass:外部低速時(shí)鐘的旁路使能。4. hext:此為輸入框,8MHz為所采用外部時(shí)鐘源的默認(rèn)頻率,用戶(hù)可根據(jù)實(shí)際使用的外部時(shí)鐘源頻率進(jìn)行修改。(注:此8MHz被修改為其他頻率值時(shí),對(duì)應(yīng)的BSP中demo目錄下的inc/at32wb415_conf.h文件內(nèi)的HEXT_VALUE宏定義也應(yīng)該一致修改,也可以采用工具生成的at32wb415_conf.h文件來(lái)進(jìn)行使用)。5. hext bypass:高速外部時(shí)鐘的旁路使能。6. pllhextdiv:點(diǎn)選框,當(dāng)HEXT作為PLL時(shí)鐘源時(shí),可配置輸入頻率為HEXT分頻或HEXT不分頻。7. pllrcs:點(diǎn)選框,可配置PLL時(shí)鐘源為HEXT或HICK。8. pll_mode:下拉框,可選擇PLL的配置模式(normal或flexible)9. 倍頻系數(shù):選擇normal模式時(shí)使用PLL_MULT參數(shù)進(jìn)行倍頻,計(jì)算公式為:PLLCLK=PLL輸入時(shí)鐘*PLL_MULT,選擇flexible模式時(shí)使用PLL_MS、PLL_NS和PLL_FR參數(shù)進(jìn)行倍頻,計(jì)算公式為:PLLCLK=PLL輸入時(shí)鐘/PLL_MS*PLL_NS/PLL_FR。為了用戶(hù)的使用方便,在選定PLL輸入時(shí)鐘源后,結(jié)果部分的sclk框中輸入目標(biāo)時(shí)鐘并按下鍵盤(pán)“Enter”鍵,會(huì)自動(dòng)計(jì)算一組倍頻參數(shù)以滿(mǎn)足用戶(hù)期望或相近的時(shí)鐘頻率sclk select:點(diǎn)選框,可配置HEXT、PLL或HICK作為系統(tǒng)時(shí)鐘。10. sclk select:點(diǎn)選框,可配置HEXT、PLL或HICK作為系統(tǒng)時(shí)鐘。11. sclk頻率:當(dāng)采用正向配置時(shí),此作為系統(tǒng)時(shí)鐘頻率的配置結(jié)果顯示,當(dāng)將其用作輸入框時(shí),輸入期望的頻率后點(diǎn)擊回車(chē)鍵,會(huì)根據(jù)此輸入值反向計(jì)算一組合適的或最接近期望值的PLL配置參數(shù)。12. hick to sclk:點(diǎn)選框,當(dāng)sclk select選擇HICK作為系統(tǒng)時(shí)鐘時(shí),可配置HICK的8MHz或48MHz到系統(tǒng)時(shí)鐘(注:當(dāng)選擇48MHz HICK到系統(tǒng)時(shí)鐘后,CLKOUT輸出HICK時(shí)的頻率也為48 MHz)。13. usbdiv:下拉框。當(dāng)PLL時(shí)鐘被選作為USB的時(shí)鐘來(lái)源時(shí),此處配置PLL時(shí)鐘到USB時(shí)鐘的分頻系數(shù)。14. USB使能:USB時(shí)鐘代碼配置的使能下拉框。15. USB時(shí)鐘頻率的顯示。此顯示欄會(huì)實(shí)時(shí)計(jì)算USB時(shí)鐘的頻率并顯示,如果配置出來(lái)的USB時(shí)鐘不等于48MHz時(shí),顯示出來(lái)的USB時(shí)鐘頻率會(huì)標(biāo)注為紅色,而實(shí)際應(yīng)用中沒(méi)有用到USB時(shí)選擇disable則不會(huì)顯示。(注:此部分只針對(duì)USB時(shí)鐘頻率的配置,USB外設(shè)時(shí)鐘使能需自行額外打開(kāi))
生成代碼
當(dāng)時(shí)鐘配置完成后,可點(diǎn)擊生成代碼,然后選擇代碼生成的路徑并確認(rèn),最后會(huì)在所選目錄下生成兩個(gè)文件夾inc和src,源文件存放在src文件夾下,頭文件存放在inc文件夾下。這些文件可結(jié)合到BSP_V2.x.x內(nèi)的工程來(lái)進(jìn)行使用。可以采用新生成的時(shí)鐘代碼文件(at32f4xx_clock.c/at32f4xx_clock.h/at32f4xx_conf.h)將原BSP demo中的對(duì)應(yīng)文件替換,在main函數(shù)中進(jìn)行system_clock_config函數(shù)調(diào)用即可。
注意事項(xiàng)
外部時(shí)鐘源(HEXT)修改
因本文檔所示例的demo和配置工具都默認(rèn)采用的8MHz外部時(shí)鐘頻率,當(dāng)實(shí)際硬件使用的外部時(shí)鐘源是非8MHz頻率時(shí)需注意以下幾點(diǎn)。
- 代碼修改
1、以實(shí)際的外部時(shí)鐘頻率按文中時(shí)鐘配置流程章節(jié)所描述的時(shí)鐘配置流程及方法來(lái)編寫(xiě)相應(yīng)的代碼,配置出期望的時(shí)鐘配置及時(shí)鐘路徑。2、修改對(duì)應(yīng)demo工程中at32f4xx_conf.h文件的HEXT_VALUE值,以實(shí)際使用的外部時(shí)鐘源頻率值來(lái)進(jìn)行修改。如實(shí)際外部高速時(shí)鐘使用12.288MHz的晶振或時(shí)鐘源時(shí),at32f4xx_conf.h文件應(yīng)修改如下:
- 工具修改
1、在時(shí)鐘配置工具中的HEXT輸入框內(nèi)填入外部時(shí)鐘源實(shí)際頻率值并按“Enter”鍵確認(rèn)。2、配置好所需的時(shí)鐘路徑及時(shí)鐘頻率,生成代碼。采用新生成的時(shí)鐘代碼文件(at32f4xx_clock.c/at32f4xx_clock.h/at32f4xx_conf.h)將原BSP demo中的對(duì)應(yīng)文件替換或取其中函數(shù)內(nèi)容進(jìn)行替換,在main函數(shù)中進(jìn)行system_clock_config函數(shù)調(diào)用即可。
工具使用
在使用本時(shí)鐘配置工具時(shí)需注意:1. 此工具生成的時(shí)鐘配置源碼文件需結(jié)合雅特力科技提供的BSP_V2.x.x進(jìn)行使用。2. 不同系列所生成的時(shí)鐘配置源碼文件不能型號(hào)混用,只能在相對(duì)應(yīng)的工程項(xiàng)目中進(jìn)行調(diào)用。3. 配置工具中各輸入框參數(shù)修改后,請(qǐng)以“Enter”鍵結(jié)束。PS. “系統(tǒng)時(shí)鐘切換”及“時(shí)鐘失效檢測(cè)”案例可點(diǎn)擊文末”閱讀原文”查看AN0133關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動(dòng)全球市場(chǎng)32位微控制器(MCU)創(chuàng)新趨勢(shì)的芯片設(shè)計(jì)公司,專(zhuān)注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進(jìn)工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運(yùn)算效能,并支持工業(yè)級(jí)別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機(jī)、掃地機(jī)、光流無(wú)人機(jī)、熱成像儀、激光雷達(dá)、工業(yè)縫紉機(jī)、伺服驅(qū)控、電競(jìng)周邊市場(chǎng)、斷路器、ADAS、T-BOX、數(shù)字電源、電動(dòng)工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費(fèi)、商務(wù)及工控等領(lǐng)域。
-
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420919 -
時(shí)鐘
+關(guān)注
關(guān)注
10文章
1714瀏覽量
131275 -
雅特力
+關(guān)注
關(guān)注
0文章
153瀏覽量
7959
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論