关于STM32F4中的时钟树
2020-02-27 来源:eefocus
很多同学在学习单片机的时候都有遇到过一个东西,那就是晶振。其实这个所谓的晶振全名叫做晶体振荡器,其作用是用于产生原始的时钟频率,晶振产生的频率经过频率发生器的放大或缩小后就成了计算机中各种不同的总线频率 ,用于计算机中各个不同的外设工作,常用晶振的模样如下图所示:
一、什么是时钟频率
计算机是一个由各种集成电路和电子器件组成,每一块集成电路中都集成了数以万计的晶体管和其他电子元件。这样一个十分庞大的系统,要使它能够正常地工作,就必须有一个指挥者,对各部分的工作进行协调。各个元件的动作就是在这个指挥下按不同的先后顺序完成自己的操作的,这个先后顺序我们称为时序。时序是计算机中一个非常重要的概念,如果时序出现错误,就会使系统发生故障,甚至造成死机。那么是谁来产生和控制这个操作时序呢?这就是“时钟”。“时钟”可以认为是计算机的“心脏”,如同人一样,只有心脏在跳动,生命才能够继续。不要把计算机的“时钟”等同于普通的时钟,它实际上是由晶体振荡器产生的连续脉冲波,这些脉冲波的幅度和频率是不变的,这种时钟信号我们称为外部时钟。它们被送入 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。