如果學過微控制器的同學應該不會陌生,學習51微控制器時最經常聽到的就是「最小系統」。
最小系統裡面少不了晶振,否則微控制器無法工作。
微控制器需要晶振(時鐘源)來工作,那麼對於stm32晶元同樣如此。
此外,同乙個電路,時鐘越快功耗越大,抗電磁干擾能力也隨之變弱。
所以對於較為複雜的mcu一般都是採取多時鐘源的方法來解決這些問題。
stm32是一塊對於功耗可控的晶元,所以需要我們手動開啟有關的時鐘樹,以方便後續的開發。
在stm32f4中,有5個最重要的時鐘源,按**分為內外部兩種;按速率也可以分為高低速兩種。
時鐘源含義
時鐘速率
用途hsi
高速內部時鐘
16mhz
可以直接作為系統時鐘或者pll輸入
hse高速外部時鐘
4~26mhz
可以直接作為系統時鐘
lsi低速內部時鐘
32khz
供給獨立看門口和自動喚醒單元使用
lse低速內部時鐘
32.768khz
主要是rtc(實時時鐘)的時鐘源
pll鎖相環
(內部倍頻器)
可以是hsi的二分頻
hse的一分頻
或hse的二分頻
鎖相環倍頻輸出,分為主pll和專用pll:
1)主pll由hse或hsi提供時鐘訊號,並且具有兩個不同的輸出時鐘:
①pllp:生成高速的系統時鐘,最高180mhz;(stm32f429)
②pllq:生成usb otg fs的時鐘(48mhz)、隨機數發生器和sdio的時鐘。
2)專用時鐘pll(plli2s),用於生成精確時鐘,在i2s介面實現高品質音訊輸出。
由於stm32複雜的時鐘體系,有人形象地稱下圖為時鐘樹。
當初學習到這個地方的時候,本人也覺得混亂。
但其實只要抓準5個時鐘源,「順藤摸瓜」就可以捋清關係了。
下圖是筆者根據自己開發板的情況畫的簡單線路圖。
了解完以上的關係就不難理解為什麼任何片內外設在使用之前,必須使能相應的時鐘。
附時鐘頻率的計算:
sysclk = fvco/pllp = fs*(plln/(pllm*pllp));
fvco:vco頻率
sysclk:系統時鐘頻率
fusb:usb,sdio,rng等的時鐘頻率
fs:pll輸入時鐘頻率,可以是hsi,hse等.
plln:主pll倍頻係數(pll倍頻),取值範圍:64~432.
pllm:主pll和音訊pll分頻係數(pll之前的分頻),取值範圍:2~63.
pllp:系統時鐘的主pll分頻係數(pll之後的分頻),取值範圍:2,4,6,8
pllq:usb/sdio/隨機數產生器等的主pll分頻係數(pll之後的分頻),取值範圍:2~15.
STM32學習 時鐘系統
眾所周知,時鐘系統是 cpu 的脈搏,就像人的心跳一樣。所以時鐘系統的重要性就不言而 喻了。stm32 的時鐘系統 stm32 的時鐘系統比較複雜,不像簡單的 51 微控制器乙個系統時鐘就可以解決一切。於 是有人要問,採用乙個系統時鐘不是很簡單嗎?為什麼 stm32 要有多個時鐘源呢?因為首先 st...
STM32 學習筆記(4)系統時鐘
cortex m3中,有個systick 系統時鐘,systick 是cm3核心的外設,相關定義在core cm3.h中。系統定時器內嵌在nvic中,是24位的向下遞減的計數器,每記一次數的時間是1 sysclk。一般設定sysclk 72m。而系統時鐘一般用於作業系統產生時基。與systick相關...
STM32學習筆記
剛到公司實習,要學習stm32開發,boss給了一塊戰艦開發板,讓我自己寫乙個功能要用在公司的產品上。難啊。以前根本沒接觸過stm32,只能一步一步慢慢來,利用晚上利用週末惡補一下。哎,算是為了大學前兩年還債吧。一 跑馬燈實驗 gpio輸出 實驗環境 keil4 實驗平台 戰艦stm32開發板 gp...