stm32 單片機時鍾


stm32 單片機時鍾學習以及分析

1 引言:

單片機(Microcontrollers),采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。
單片機時鍾可以說如同人的心臟那樣重要,我們在心臟的搏動下進行自己的生命活動,同樣的單片機在時鍾下進行自己的控制活動。

2 時鍾的分類:

單片機的時鍾分為內部時鍾與外部時鍾:一般而言,內部時鍾集成在芯片內部(RC振盪電路),其精度比較低;外部時鍾,顧名思義,存在於芯片外部(晶體或陶瓷諧振器),可以為系統提供精確的時鍾。
晶振是給單片機提供工作信號脈沖的,如圖所示的為外部晶振,頻率為4MHz,我們常用的晶振頻率為12MHz,單片機工作時,是一條一條地從RoM中取指令,然后一步一步地執行。單片機訪問一次存儲器的時間,稱之為一個機器周期,這是一個時間基准。—個機器周期包括12個時鍾周期。如果一個單片機選擇了12MHz晶振,它的時鍾周期是1/12us,它的一個機器周期是12×(1/12)us,也就是1us。
在這里插入圖片描述
有些晶振的頻率並數是整數,如:11.0592MHz的晶振。單片機在進行串行通信時,常用的波特率為1200,2400,4800,9600,115200等,為了適應單片機的串口通訊波特率的計算而來的。用11.0592MHz晶振經過相應的分頻或者倍頻后剛好能夠得出一個整數的波特率,這樣在上位機和下位機的同步方面比較方便。

3 stm32的時鍾來源

這里以stm32f1系列的芯片為例。
由上面可知,系統的時鍾來源有內部時鍾與外部時鍾,詳細的來說stm32f1有五個時鍾源:
HSI(高速內部時鍾)
HSE(高速外部時鍾)
LSI(低速內部時鍾)
LSE(低速外部時鍾)
PLL(鎖相環倍頻輸出)
每一個時鍾都可以獨立的開啟與關閉。stm32的時鍾來源眾多,而且時鍾配置相對復雜,為什么它要做的這么復雜呢?必然有其道理。我們知道,stm32功能強大,有着豐富的內置外設,而這些外設如果都使用一個時鍾,也不是不可以,正如使用宰牛刀去殺雞的道理一樣,有些外設,並不需要很高的時鍾,例如看門狗,對於同一個電路來說,時鍾頻率越高,功耗越大,而且易於受到外部電磁環境的干擾,因此,stm32才有這眾多的時鍾來源與復雜的時鍾系統。
以下,我們結合stm32的時鍾樹來對stm32的時鍾系統進行分析:
在這里插入圖片描述
圖中標紅的部分為stm32f1的五個時鍾來源

3.1 HSI(高速內部時鍾):

首先來看第一個8 MHz的HSI高速內部時鍾
在這里插入圖片描述
HSI的兩條路徑都到達了SW這個是系統時鍾切換器,其中紅色路徑直接到達了SW;藍色路徑線到達了PLLSRC,而后經過PLL鎖相環倍頻后輸出,形成PLLCLK,達到SW。時鍾切換器選SYSCLK(系統時鍾的來源)。

3.2 HSE(高速外部時鍾)

高速外部時鍾,可接石英/陶瓷諧振器,或者接外部時鍾源(例如另一單片機輸出的時鍾),頻率范圍為4MHz~16MHz。
在這里插入圖片描述
主要有三條路徑:藍色路徑直接到達SW切換器;紅色路徑通過PLL,形成PLLCLK到達SW切換器;紫色路徑同紅色路徑,只不過在經過PLL前先進行了二分頻;綠色路徑,經過128分頻以后送到了RTCSCL(實時時鍾選擇器)進行時鍾選擇。其中CSS為時鍾安全系統,詳細的解釋可以從STM32參考手冊中查找到:
在這里插入圖片描述

3.3 LSE(低速外部時鍾)

LSE晶體是一個32.768kHz的低速外部晶體或陶瓷諧振器。它為實時時鍾或者其他定時功能提供一個低功耗且精確的時鍾源。至於這里外什么又使用不是整數的頻率。從百度上找到如下解釋:32.768KHZ的時鍾晶振產生的振盪信號經過石英鍾內部分頻器進行15次分頻后得到1HZ秒信號,即秒針每秒鍾走一下,石英鍾內部分頻器只能進行15次分頻要是換成別的頻率的晶振,15次分頻后就不是1HZ的秒信號,時鍾就不准了。32.768K=32768=2的15次方,數據轉換比較方便、精確。
在這里插入圖片描述
可以看到LSE專用於為RTC提供精確的時鍾。

3.4 LSI(低速內部時鍾)

在這里插入圖片描述
通過紅色路徑,LSI給RTC提供時鍾源,當然,這個時鍾源並不准確;一般而言LSI為獨立看門狗和自動喚醒單元提供時鍾。

3.5 MCO(主時鍾輸出)

一個單片機可以輸出相應的時鍾可以通過引腳作為另一個單片機的輸入時鍾。
在這里插入圖片描述

4 stm32的系統時鍾

在這里插入圖片描述
可以清楚地看到系統時鍾的來源有三個:HSI、PLLCLK、HSE,並且系統時鍾的頻率最大為72MHz。例如:一個8MHz的晶振,經過PLLMUL進行9倍頻,后輸出72MHz的系統時鍾頻率。該系數由軟件確定,只有在PLL關閉條件下才可以被寫入。

5 stm32外設時鍾

在這里插入圖片描述
從上面圖片可以看到stm32有着豐富的外設我們注意到在每一個外設初都有Peripheral clock enable 這個選項。我們知道這么多的外設,我們再一次任務中也不會全部都要使用,如果沒有這個使能控制,那么當系統時鍾開啟后,全部的外設時鍾將開始工作,但這是沒有必要的,而且為了盡可能的減小功耗,所以才使用了這樣的一個配置。

5.1 USB

其中USB比較特殊,這里將其單列出來。USB沒有掛在SYSCLK,掛在了PLLCLK,這是由於USB在通信時對時鍾要求比較高,而SYSCLK當其時鍾來源是HSI時,時鍾並沒有很精確,因此才將USB掛在了PLLCLK上。

5.2 其它外設

這里重點想談一下橘黃色方框里的內容。
在這里插入圖片描述
其中AHB(Advanced High Performance Bus)為高級高性能總線,其進行相應的分頻(1、2···512)后將時鍾提供給外設。APB(Advanced Peripheral Bus)外圍總線,分出來了兩個APB1、APB2,我們可以看到APB2的最高頻率要高於APB1,這是由於不同外設的需求來決定的,很好理解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM