0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【有那么點(diǎn)詳細(xì)的CW32學(xué)習(xí)筆記】看手冊(cè)配置時(shí)鐘樹

jf_08851166 ? 來源:jf_08851166 ? 作者:jf_08851166 ? 2023-08-17 14:54 ? 次閱讀

本章針對(duì)CW32F030C8T6的時(shí)鐘樹進(jìn)行詳細(xì)解析,續(xù)第一章啟動(dòng)文件的相關(guān)講解。

上一章講到,單片機(jī)的啟動(dòng)文件會(huì)使用單片機(jī)內(nèi)部的RC振蕩器作為單片機(jī)的啟動(dòng)時(shí)鐘,并且該時(shí)鐘頻率被設(shè)置為48MHz。但講解有疏漏,根據(jù)編程手冊(cè)的描述,該48MHz僅為HSI頻率,而非輸送到時(shí)鐘總線上的頻率,在進(jìn)入時(shí)鐘總線之前,該時(shí)鐘會(huì)被分頻(也就是降低頻率),在不進(jìn)行任何配置的情況下,這個(gè)48M的信號(hào)會(huì)被6分頻。

wKgaomTdwDyAKxhFAAK8fsm0RSI617.png

這個(gè)圖包含很多信息,但是圖中的彩色字信息并非全部來自此圖,更多的信息需要結(jié)合代碼和寄存器描述來獲得:

1.HSI被配置為48M是通過啟動(dòng)文件中的SystemInit函數(shù)得知的。

2.系統(tǒng)選擇HSI作為啟動(dòng)時(shí)鐘是通過編程手冊(cè)“時(shí)鐘與復(fù)位”一章得知的。

3.HSI之后的預(yù)分頻器被設(shè)置為6分頻,是通過查看指示該分頻器的寄存器得知的。

下面以信息3為例,講解如何查看此圖中的相關(guān)寄存器:

在經(jīng)過SYSCTRL_CR0.SYSCLK寄存器選擇之后,系統(tǒng)時(shí)鐘SysClk會(huì)在經(jīng)過分頻后送入內(nèi)核與各個(gè)外設(shè),這一信息流程圖與粉色箭頭已經(jīng)清晰展示。

在手寫箭頭指向的方框中,有1、...、16的字樣,表示該預(yù)分頻器可以進(jìn)行這些倍數(shù)的分頻。所謂分頻比如48M,6分頻,其分頻結(jié)果就是48M/6 = 8M,2分頻就是24M,簡(jiǎn)單的除法。

方框下方是該分頻器對(duì)應(yīng)的控制寄存器,寄存器的名字并不一定完全叫這個(gè),但是這個(gè)名字可以很容易就被理解為預(yù)分頻器控制相關(guān)的寄存器,該寄存器名字拆解版本是:SYS(系統(tǒng))CTRL(控制)HSI.DIV(分頻),這套命名系統(tǒng)是通用的,即使使用的是別的單片機(jī),也可以根據(jù)這套命名規(guī)則快速確認(rèn)寄存器的功能。

通過查看編程手冊(cè)時(shí)鐘與復(fù)位章節(jié)的寄存器描述,此寄存器DIV位的值默認(rèn)為6。而HSI頻率的設(shè)置則是該寄存[10:0]位的TRIM位決定的。

wKgaomTdwO-ARVEbAANsG5JIU9c938.png

只需要沿著紫色箭頭的方向配置相關(guān)的寄存器,單片機(jī)就能夠正常啟動(dòng),但這一步并不需要開發(fā)者親自去做,芯片廠家提供的啟動(dòng)文件和庫可以自動(dòng)完成這一步。但不論怎么說RC振蕩器的精度有限,且8M的速度放在48MHz主頻的內(nèi)核上也確實(shí)不夠看,因此大部分時(shí)候,都需要使用外部晶振提供的時(shí)鐘,通過鎖相環(huán)倍頻之后達(dá)到48M,最后通過時(shí)鐘線送入內(nèi)核和外設(shè)。下面講解怎么配置才能得到48MHz的高精度高速時(shí)鐘信號(hào):

wKgZomTdwPeABsC_AAHbKWwcGyk219.png

首先,電路板上需要有一個(gè)在范圍內(nèi)的晶體,晶體的兩個(gè)引腳需要在外圍電路的配合下連接到單片機(jī)的晶體輸入引腳,同時(shí)IO需要工作在正確的工作模式。

wKgaomTdwP6ABx8DAAV6t55immg802.png

硬件部分準(zhǔn)備完成了,接下來就是配置HSE和PLL相關(guān)的寄存器了。下面是相關(guān)的配置代碼:

wKgZomTdwQaAW00-AAQIv59yul8789.png

首先需要打開HSE功能,允許單片機(jī)接收HSE提供的震蕩信號(hào)。

然后配置PLL的分頻系數(shù),這將決定鎖相環(huán)的輸出頻率,此處設(shè)置為1分頻,也就是不分頻。

使能PLL功能,并告知用到的時(shí)鐘源、時(shí)鐘頻率、倍頻系數(shù),這對(duì)應(yīng)三個(gè)入口參數(shù)。

將flash的等待周期設(shè)置為3個(gè)時(shí)鐘周期,部分單片機(jī)需要進(jìn)行這一步操作,原因會(huì)在后面細(xì)說。

進(jìn)行時(shí)鐘切換,按照注釋完成準(zhǔn)備工作之后即可切換。

先查看HSE使能函數(shù):

wKgZomTdwRuAfNh8AAT8ZHB2ruM247.png

僅展示主體部分,函數(shù)注釋未列出,但CW32的時(shí)鐘配置庫函數(shù)注釋相對(duì)來說很詳細(xì),推薦配置都寫在函數(shù)注釋里面,不懂得寄存器配置的小伙伴可以直接根據(jù)推薦進(jìn)行配置,如果有更深入的需求,直接查看芯片手冊(cè)對(duì)應(yīng)的寄存器描述即可。后續(xù)的參數(shù)配置直接根據(jù)注釋進(jìn)行推薦配置即可,在PLL與HSE相關(guān)的寄存器配置完成之后,48M的時(shí)鐘信號(hào)就已經(jīng)產(chǎn)生了,只不過系統(tǒng)的時(shí)鐘源還不是這個(gè)(記得那個(gè)梯形的選擇器嗎?),下一步就是切換時(shí)鐘源,讓系統(tǒng)工作在48M的頻率下。切換時(shí)鐘?我知道你很急,但是先別急,雖然一般情況下確實(shí)可以直接切換了,但是CW32有個(gè)需要注意的地方,那就是flash的配置。

為什么CW32需要進(jìn)行flash配置之后才能切換時(shí)鐘源?

我們都知道,寫的程序都存儲(chǔ)在flash中,等到需要執(zhí)行程序的時(shí)候,CPU會(huì)和flash進(jìn)行通信,取出flash中的指令然后執(zhí)行。問題來了,既然程序需要通過某種通信方式傳輸?shù)紺PU,那這個(gè)通信傳輸?shù)乃俣纫欢ㄓ袀€(gè)上限,這個(gè)上限就是flash的讀寫速度上限,當(dāng)flash的實(shí)際讀寫速度與其允許的讀寫速度不匹配時(shí),flash與CPU之間的通信就會(huì)出現(xiàn)問題,之后就可以理解為CPU有高速取指令需求,但是flash無法在這個(gè)速度下跟上CPU的請(qǐng)求速度,這個(gè)通信就斷了,程序就不動(dòng)了。因此我們需要設(shè)置flash,讓他多等幾個(gè)時(shí)鐘周期再響應(yīng),這樣flash就能適應(yīng)更高頻率的讀取請(qǐng)求,并且在此程序的配置中,需要使能預(yù)取指令和緩存功能,這兩個(gè)功能可以讓flash與CPU更好地配合以實(shí)現(xiàn)單片機(jī)的高速運(yùn)行。障礙都解決了,接下來真的只需要切換時(shí)鐘即可。對(duì)比部分:這一部分會(huì)列出stm32f103c8t6單片機(jī)的標(biāo)準(zhǔn)庫上電時(shí)鐘設(shè)置代碼進(jìn)行對(duì)比。

wKgaomTdwSKAVcsnAAVZ3G6pRfk885.png

wKgZomTdwSqAJd-OAAQvDxFWOBE389.png

這里的條件編譯,我選擇最后一條,如果需要上電設(shè)置為別的頻率,只需要在同一個(gè)文件中把宏定義注釋取消即可。

wKgaomTdwTWAa7gKAAIBK-i6-iw725.png

下面列出設(shè)置時(shí)鐘到72M函數(shù)的一部分,此函數(shù)與CW32的時(shí)鐘初始化順序幾乎是一模一樣,首先需要將HSE使能并等待時(shí)鐘穩(wěn)定,之后設(shè)置PLL的參數(shù),配置flash為2個(gè)等待周期,再使能PLL輸出,等待PLL時(shí)鐘穩(wěn)定再切換時(shí)鐘。

wKgaomTdwTyAOC16AAJrDj8SmeE820.png

wKgaomTdwZmAHJLWAAGl2rHjPlY591.png

wKgaomTdwaSAXCQkAAIYa0uMiC4308.png

可以看出,即使是不同的芯片,他們?cè)诖蟛糠值胤降牟僮饕彩且粯拥?,只是一些?xì)節(jié)上有些許不同。

總結(jié):

1.本章簡(jiǎn)單展示了如何查找手冊(cè)來配置寄存器,且再次強(qiáng)調(diào)庫函數(shù)的本質(zhì)就是操作寄存器。

2.單片機(jī)都會(huì)有一個(gè)時(shí)鐘樹,時(shí)鐘樹的圖可以在編程手冊(cè)(不是數(shù)據(jù)表和內(nèi)核手冊(cè))中找到。

3.部分單片機(jī)想要工作在高工作頻率下,需要設(shè)置flash等待時(shí)間并打開緩存和預(yù)取指令使能。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119192
  • 時(shí)鐘源
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    15882
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    168

    瀏覽量

    500
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】單片機(jī)啟動(dòng)\庫函數(shù)構(gòu)成

    此篇文章是CW32F030C8T6的參考資料,很詳細(xì),適合初學(xué)者。
    的頭像 發(fā)表于 08-10 11:13 ?944次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】單片機(jī)啟動(dòng)\庫函數(shù)構(gòu)成

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】通用定時(shí)器——輸出比較

    本章以CW32通用定時(shí)器為例介紹單片機(jī)定時(shí)器的用法。 定時(shí)器是單片機(jī)中一個(gè)非常傳統(tǒng)且重要的外設(shè),定時(shí)器的 本質(zhì)其實(shí)就是一個(gè)計(jì)數(shù)器 ,只不過被計(jì)數(shù)的對(duì)象是定時(shí)器的時(shí)鐘源。定時(shí)器要正常工作,需要這幾
    的頭像 發(fā)表于 12-28 11:24 ?1176次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】通用定時(shí)器——輸出比較

    CW32移植Free-RTOS】CW32開發(fā)者扶持計(jì)劃

    CW32配置Free-RTOS全過程,CW32開發(fā)者扶持計(jì)劃
    的頭像 發(fā)表于 04-18 09:38 ?5929次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開發(fā)者扶持計(jì)劃

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】模數(shù)轉(zhuǎn)換器

    來說,想要判斷大小就需要有對(duì)比,因此該數(shù)字指示的電壓大小實(shí)際上是一個(gè)比較的結(jié)果。 ADC將需要測(cè)量的電壓信號(hào)Ut與已知電壓的信號(hào)U作比較,并最終輸出一個(gè)數(shù)字表示Ut相當(dāng)于多少比例的U。 接下來就可以看看CW32的ADC外設(shè)結(jié)構(gòu)框圖了,
    的頭像 發(fā)表于 02-29 09:41 ?600次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】模數(shù)轉(zhuǎn)換器

    【應(yīng)用筆記CW32 自舉程序中使用的 ISP 協(xié)議

    提供的 ISP 模式,通過 UART 串口方便地實(shí)現(xiàn)對(duì) CW32 微控制器片上 FLASH主存儲(chǔ)器的擦除和燒寫。本應(yīng)用筆記將介紹如何進(jìn)入 CW32 微控制器 ISP 模式,以及所使用的 ISP 協(xié)議,并
    發(fā)表于 06-06 13:26

    CW32 MCU開發(fā)資料匯總(手冊(cè)、工具、固件庫)

    1、CW32 MCU數(shù)據(jù)手冊(cè):*附件:CW32L083數(shù)據(jù)手冊(cè).pdf*附件:CW32F030數(shù)據(jù)手冊(cè)
    發(fā)表于 07-27 14:47

    STM32Cube學(xué)習(xí)教程之時(shí)鐘配置詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32Cube學(xué)習(xí)教程之時(shí)鐘配置詳細(xì)資料概述。
    發(fā)表于 08-14 08:00 ?3次下載
    STM32Cube<b class='flag-5'>學(xué)習(xí)</b>教程之<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>樹</b><b class='flag-5'>配置</b>的<b class='flag-5'>詳細(xì)</b>資料概述

    應(yīng)用筆記(二)| 武漢芯源CW32自舉程序中使用的ISP協(xié)議

    對(duì)CW32微控制器片上FLASH主存儲(chǔ)器的擦除和燒寫。本應(yīng)用筆記將介紹如何進(jìn)入CW32微控制器ISP模式,以及所使用的ISP協(xié)議,并詳細(xì)介紹支持的每個(gè)命令。01目標(biāo)芯片進(jìn)入ISP模式的
    的頭像 發(fā)表于 07-11 16:08 ?1260次閱讀
    應(yīng)用<b class='flag-5'>筆記</b>(二)| 武漢芯源<b class='flag-5'>CW32</b>自舉程序中使用的ISP協(xié)議

    cw32和gd32的區(qū)別

    cw32和gd32的區(qū)別 CW32和GD32是兩種不同的芯片系列,分別由WCH和GigaDevice公司推出,兩者很多不同之處,下面我們來詳細(xì)介紹。 首先從
    的頭像 發(fā)表于 08-16 11:15 ?1656次閱讀

    CW32實(shí)時(shí)時(shí)鐘(RTC)介紹

    CW32實(shí)時(shí)時(shí)鐘(RTC)介紹
    的頭像 發(fā)表于 10-24 15:36 ?924次閱讀
    <b class='flag-5'>CW32</b>實(shí)時(shí)<b class='flag-5'>時(shí)鐘</b>(RTC)介紹

    應(yīng)用筆記-CW32 自舉程序中使用的 ISP 協(xié)議

    ,通過UART串口方便地實(shí)現(xiàn)對(duì)CW32微控制器片上FLASH主存儲(chǔ)器的擦除和燒寫。本應(yīng)用筆記將介紹如何進(jìn)入CW32微控制器ISP模式,以及所使用的ISP協(xié)議,并詳細(xì)介紹支持的每個(gè)命令。
    發(fā)表于 06-06 13:37 ?7次下載

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?605次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】通用異步收發(fā)器—發(fā)送篇

    本章介紹CW32通用異步收發(fā)器的使用。 雖然大部分時(shí)候會(huì)被簡(jiǎn)單稱為“串口”,但實(shí)際上 用“串口”來指代UART并不正確 。串口對(duì)應(yīng)并口的概念,在串口通信中,數(shù)據(jù)被以二進(jìn)制形式發(fā)送,并且每次發(fā)送都只
    的頭像 發(fā)表于 11-17 17:30 ?596次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】通用異步收發(fā)器—發(fā)送篇

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】IIC接口-主機(jī)發(fā)送

    例程鏈接 : https://pan.baidu.com/s/1s1XwqDFkO8fK4SRSTKsNhA?pwd=mshk 提取碼 :mshk 本章將介紹CW32的IIC接口,并最終點(diǎn)亮一塊
    的頭像 發(fā)表于 01-11 09:53 ?443次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】IIC接口-主機(jī)發(fā)送

    那么點(diǎn)詳細(xì)CW32學(xué)習(xí)筆記】IIC接口-OLED驅(qū)動(dòng)

    ,實(shí)際上就是密集LED點(diǎn)陣,所以必定有用于控制大量LED燈的驅(qū)動(dòng)器,本教學(xué)使用的OLED驅(qū)動(dòng)是SSD1306,該驅(qū)動(dòng)器多種通信接口,這里使用IIC接口(具體使用什么接口,數(shù)據(jù)手冊(cè)上會(huì)有詳細(xì)介紹) 根據(jù)SSD1306數(shù)據(jù)
    的頭像 發(fā)表于 01-11 09:49 ?540次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點(diǎn)</b><b class='flag-5'>詳細(xì)</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】IIC接口-OLED驅(qū)動(dòng)