1. 程式人生 > >STM32學習之時鐘樹分析

STM32學習之時鐘樹分析

上一章我們已經將STM32的開發環境搭建成功了,那麼接下來我們就可以開始進行實際操作了。在進行實際操作之前我們需要提前準備好一些資料文件,這些資料文件大家可以在我的百度網盤 https://pan.baidu.com/s/1BejuAkvtU5KKlJEo3HAXMA  提取碼:dfs6  中進行下載。

很多同學在學習微控制器的時候都有遇到過一個東西,那就是晶振。其實這個所謂的晶振全名叫做晶體振盪器,其作用是用於產生原始的時鐘頻率,晶振產生的頻率經過頻率發生器的放大或縮小後就成了計算機中各種不同的匯流排頻率 ,用於計算機中各個不同的外設工作,常用晶振的模樣如下圖所示:

一、什麼是時鐘頻率

計算機是一個由各種積體電路和電子器件組成,每一塊積體電路中都集成了數以萬計的電晶體和其他電子元件。這樣一個十分龐大的系統,要使它能夠正常地工作,就必須有一個指揮者,對各部分的工作進行協調。各個元件的動作就是在這個指揮下按不同的先後順序完成自己的操作的,這個先後順序我們稱為時序。時序是計算機中一個非常重要的概念,如果時序出現錯誤,就會使系統發生故障,甚至造成宕機。那麼是誰來產生和控制這個操作時序呢?這就是“時鐘”。“時鐘”可以認為是計算機的“心臟”,如同人一樣,只有心臟在跳動,生命才能夠繼續。不要把計算機的“時鐘”等同於普通的時鐘,它實際上是由晶體振盪器產生的連續脈衝波,這些脈衝波的幅度和頻率是不變的,這種時鐘訊號我們稱為外部時鐘。它們被送入 CPU 中,再形成 CPU 時鐘。其實總的來說晶振的作用就是給計算機提供一個時鐘訊號(一個非常穩定的頻率訊號),使微控制器各內部元件同步工作,並且在和外部裝置通訊時是也能達到同步

。就好像我們做廣播體操的時候 廣播上喊的節拍1234 2234 3234。。。。然後我們全部的同學就按照這個節奏進行一個個動作。節拍越快我們動作越快。節拍越慢我們動作的越慢。

二、STM32F407時鐘樹

系統時鐘的選擇是在啟動時進行,復位時內部 16MHZ 的 RC 振盪器被選為預設的 CPU時鐘,隨後可以選擇外部的、具失效監控的 4-26MHZ 時鐘;當檢測到外部時鐘失效時,它將被隔離,系統將自動地切換到內部的 RC 振盪器。在 STM32 中,有五個時鐘源,為 HSI、 HSE、 LSI、 LSE、 PLL,它們都是時鐘所提供的來源,具體如下圖所示:

2.1、HSI 是高速內部時鐘, RC 振盪器,頻率預設為 16MHz,可以從 STM32 時鐘樹中看到如下所示


2.2、HSE 是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率範圍為3MHz~25MHz,時鐘樹的截圖如下

2.3、LSI 是低速內部時鐘, RC 振盪器,頻率為 32kHz,可以用於驅動獨立看門狗和通過程式選擇驅動 RTC(RTC 用於從停機/待機模式下自動喚醒系統),時鐘樹的截圖如下

2.4、LSE 是低速外部時鐘,接頻率為 32.768kHz 的石英晶體,也可以被用來驅動 RTC,時鐘樹的截圖如下

2.5、PLL 為鎖相環輸出,其時鐘輸入源可選擇為 HSI 或者 HSE/等。但是其輸出頻率最大不得超過 120MHz,時鐘樹的截圖如下

三、STM32F407的時鐘樹深入分析

眾所周知,微控制器(處理器)在執行時必須要依賴週期性的時鐘脈衝來驅動,而我們的微控制器往往由一個外部晶體振盪器提供時鐘作為時鐘輸入源,之後經過一些分頻器或者倍頻器轉換為多個外部裝置的執行時鐘,這種時鐘“能量”擴散流動的路徑就像是大樹的養分通過主幹流向各個分支,因此常稱之為“時鐘樹”。

上述是STM32F407的外部時鐘怎樣由8M轉變為168M的系統時鐘以及各個外設頻率分析,以下開始介紹韌體庫工程中對相應分頻器以及倍頻器的設定

四、溫馨小提示

1、STM32外設時鐘在復位之後全部處於關閉狀態,這麼做的目的是為了降低功耗,當我們使用相關外設時務必先開啟相應外設的時鐘 !!!

2、硬體設計時外部晶振應該儘量靠近晶片。

3、硬體連線外部晶振時一般需要外接兩個瓷片電容,這兩個瓷片電容的範圍一般在10~50pF之間,這兩個瓷片電容的作用是在晶體振盪器產生振盪時進行削減諧振保證頻率的穩定。

4、鎖相環(PLL)中的壓控振盪器(VCO)的作用保證鎖相環電路Q值穩定,而VCO的輸入頻率必須在1~2M之間,所以我們設定 M 值為8,由此得到PLL輸入時鐘頻率為1M。VCO的輸出時鐘頻率必須在192~432M之間,所以我們設定 N 值為336,由此得到PLL輸出時鐘為336M。