stm32单片机时钟

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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,这是由于不同外设的需求来决定的,很好理解。

相关文档
最新文档