柚子快報(bào)邀請(qǐng)碼778899分享:架構(gòu) 【GD32】
柚子快報(bào)邀請(qǐng)碼778899分享:架構(gòu) 【GD32】
文章目錄
一、有關(guān)時(shí)鐘源二、系統(tǒng)時(shí)鐘架構(gòu)三、時(shí)鐘樹分析四、修改參數(shù)步驟1、設(shè)置外部晶振2、選擇外部時(shí)鐘源。3、 設(shè)置系統(tǒng)主頻率大小4、修改PLL分頻倍頻系數(shù)
學(xué)習(xí)系統(tǒng)時(shí)鐘架構(gòu)和時(shí)鐘樹,驗(yàn)證及學(xué)習(xí)筆記如下,如有錯(cuò)誤,歡迎指正。主要記錄了總線下掛載外設(shè),總線時(shí)鐘源以及系統(tǒng)時(shí)鐘的配置。
一、有關(guān)時(shí)鐘源
1、HXTAL:高速外部時(shí)鐘,4到32MHz的外部振蕩器可為系統(tǒng)提供更為精確的主時(shí)鐘。它是板子焊接的外部晶振,精度高,但功耗比內(nèi)部時(shí)鐘較高;
2、LXTAL:低速外部時(shí)鐘,LXTAL晶體是一個(gè)32.768kHz的低速外部晶體或陶瓷諧振器。它為實(shí)時(shí)時(shí)鐘電路提供一個(gè)低功耗且精確的時(shí)鐘源。
3、IRC8M:高速內(nèi)部8MHz時(shí)鐘,內(nèi)部8MHz RC振蕩器時(shí)鐘,簡(jiǎn)稱IRC8M時(shí)鐘,擁有8MHz的固定頻率,設(shè)備上電后CPU默認(rèn)選擇的時(shí)鐘源就是IRC8M時(shí)鐘。它是芯片內(nèi)部自帶的時(shí)鐘,精度較低,可以應(yīng)用在對(duì)時(shí)鐘要求不高的場(chǎng)景中;
4、IRC28M:高速內(nèi)部28MHz時(shí)鐘,內(nèi)部28MHz RC振蕩器時(shí)鐘 (IRC28M) 有一個(gè)固定的頻率28MHz,專門用作ADC時(shí)鐘。
5、IRC48M:高速內(nèi)部48MHz時(shí)鐘,內(nèi)部48M RC振蕩器時(shí)鐘(IRC48M) 有一個(gè)固定的頻率48MHz,用作USB時(shí)鐘或者PLL時(shí)鐘源。 6、IRC32K:低速內(nèi)部時(shí)鐘;
7、IRC40K:低速內(nèi)部時(shí)鐘,IRC40K RC振蕩器時(shí)鐘擔(dān)當(dāng)一個(gè)低功耗時(shí)鐘源的角色,它的時(shí)鐘頻率大約40 kHz,為獨(dú)立看門狗定時(shí)器和實(shí)時(shí)時(shí)鐘電路提供時(shí)鐘。
8、內(nèi)部鎖相環(huán)(PLL):對(duì)輸入?yún)⒖碱l率為4到32MHz時(shí)鐘進(jìn)行分頻操作,輸出一個(gè)8-120 MHz的時(shí)鐘輸出。嚴(yán)格來(lái)說(shuō)鎖相環(huán)不算時(shí)鐘源,它是其他時(shí)鐘源頭配置而來(lái)。
剩下就是HXTAL時(shí)鐘監(jiān)視器、時(shí)鐘預(yù)分頻器、時(shí)鐘多路復(fù)用器和時(shí)鐘門控電路等。
AHB、 APB和Cortex?-M4時(shí)鐘都源自系統(tǒng)時(shí)鐘(CK_SYS),系統(tǒng)時(shí)鐘的時(shí)鐘源可以選擇IRC8M、HXTAL或PLL。
做項(xiàng)目時(shí)需要確認(rèn)該項(xiàng)目所用晶振為內(nèi)部晶振還是外部晶振。
二、系統(tǒng)時(shí)鐘架構(gòu)
(1)以GD32F350系列為例,Cortex-M4架構(gòu),最高時(shí)鐘頻率為108MHz。 通過(guò)固件庫(kù)的system_gd32f10x.c以及系統(tǒng)時(shí)鐘架構(gòu)可知:
/* HXTAL is stable */
/* AHB = SYSCLK */
RCU_CFG0 |= RCU_AHB_CKSYS_DIV1;
/* APB2 = AHB/2 */
RCU_CFG0 |= RCU_APB2_CKAHB_DIV2;
/* APB1 = AHB/2 */
RCU_CFG0 |= RCU_APB1_CKAHB_DIV2;
AHB總線為系統(tǒng)時(shí)鐘的1分頻,即最高頻率為108MHz。 APB1總線為系統(tǒng)時(shí)鐘的2分頻,即最高頻率為54MHz。 APB2總線為系統(tǒng)時(shí)鐘的1分頻,即最高頻率為54MHz。
(2)通過(guò)分析系統(tǒng)架構(gòu)圖可知:
系統(tǒng)時(shí)鐘分頻情況。時(shí)鐘總線(AHB、APB1、APB2)的所掛載的外設(shè)。 (以TIMER1為例,掛載的是APB1總線,USART0掛載APB2總線。)
三、時(shí)鐘樹分析
目標(biāo)是:找到TIMER5和USART0 從左往右分析:最左側(cè)的四個(gè)方框?yàn)樗姆N時(shí)鐘源。要選擇一個(gè)時(shí)鐘源。 以HXTAL為例。
1、選擇外部HXTAL時(shí)鐘源(提供系統(tǒng)時(shí)鐘頻率)。
2、PLLPRESEL選擇外部晶振作為PLL時(shí)鐘源,經(jīng)過(guò)PREDV分頻,PLLSEL選擇外部晶振作為PLL時(shí)鐘源,經(jīng)過(guò)PLL倍頻得到CK_PLL,
3、通過(guò)SCS選擇PLL時(shí)鐘源作為系統(tǒng)時(shí)鐘CK_SYS。
4、CK_SYS系統(tǒng)時(shí)鐘通過(guò)分頻得到CK_AHB,即為AHB總線的時(shí)鐘頻率。
5、 以TIMER1為例,TIMER1掛載APB1總線,APB1分頻系數(shù)為2,則TIMER1頻率為AHB÷[apb1 prescaler/2]=AHB,
6、 以USART0為例,USART0掛載APB2總線,通過(guò)APB2分頻得到CK_APB2頻率直接提供USART0使用。
四、修改參數(shù)步驟
1、設(shè)置外部晶振
外部晶振時(shí)鐘頻率,在gd32f30x.h文件中,根據(jù)實(shí)際外部晶振頻率修改參數(shù)。示例選擇外部晶振12M,其中HXTAL_VALUE即板子所焊接的外部晶振的宏定義。
/* define value of high speed crystal oscillator (HXTAL) in Hz */
#if !defined HXTAL_VALUE
#ifdef GD32F10X_CL
#define HXTAL_VALUE ((uint32_t)25000000) /*!< value of the external oscillator in Hz */
#else
#define HXTAL_VALUE ((uint32_t)12000000) /* !< from 4M to 16M *!< value of the external oscillator in Hz*/
#endif /* HXTAL_VALUE */
#endif /* high speed crystal oscillator value */
2、選擇外部時(shí)鐘源。
在system_gd32f3x0.c文件,_SYS_OSC_CLK為系統(tǒng)時(shí)鐘主頻率選擇宏定義,使用外部晶振選擇__HXTAL。
3、 設(shè)置系統(tǒng)主頻率大小
在system_gd32f3x0.c文件中例如:選擇了72MHz作為時(shí)鐘頻率__SYSTEM_CLOCK_72M_PLL_HXTAL
4、修改PLL分頻倍頻系數(shù)
在函數(shù)system_clock_72m_hxtal()內(nèi)修改。 修改前:系統(tǒng)外部晶振HXTAL默認(rèn)為8MHZ,帶入公式:PLL = HXTAL * 9 = 72 MHz,PLL的倍頻系數(shù)是9.
修改后:系統(tǒng)外部晶振HXTAL為12M,代入公式,PLL倍頻系數(shù)為6
五、驗(yàn)證系統(tǒng)時(shí)鐘的準(zhǔn)確性
通過(guò)系統(tǒng)函數(shù)獲取時(shí)鐘配置,uint32_t rcu_clock_freq_get(rcu_clock_freq_enum clock)函數(shù)可用來(lái)獲取時(shí)鐘參數(shù), 獲取APB1時(shí)鐘:uclk = rcu_clock_freq_get(CK_APB1); 獲取APB2時(shí)鐘:uclk = rcu_clock_freq_get(CK_APB2); 獲取CK_AHB時(shí)鐘:uclk = rcu_clock_freq_get(CK_AHB); 獲取CK_SYS時(shí)鐘:uclk = rcu_clock_freq_get(CK_SYS)。
詳細(xì)的系統(tǒng)時(shí)鐘頻率配置參考鏈接: GD32系列筆記四:時(shí)鐘樹Clock tree
GD32_時(shí)鐘配置解析
【GD32】系統(tǒng)時(shí)鐘解析
史上最詳細(xì)的gd32時(shí)鐘頻率設(shè)置
柚子快報(bào)邀請(qǐng)碼778899分享:架構(gòu) 【GD32】
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。