stm32学习总结:时钟系统
一、 芯片时钟
- 时钟简介
时钟是同步工作系统的同步节拍,时钟的快慢就是我们常说的工作频率,以赫兹(HZ)为单位。时钟系统指导器件的运行,我们分析器件的工作特性时,常常会看器件的时序图,时序图中的时钟周期就是时钟系统来决定的。时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作,外设部件在时钟的驱动下完成各种工作,例如:串口数据的发送、AD转换、定时器计数等。因此时钟对于计算机系统是至关重要的,通常时钟系统出现问题也是致命的,比如振荡器不起振、振荡不稳、停振等。 时钟信号推动单片机内各个部分执行相应的指令,时钟就像人的心跳一样。 - 时钟来源
a. 外部直接输入时钟信号,SoC有个引脚用来输入外部时钟信号,用的很少;
b. 外部晶振+内部时钟发生器产生时钟,大部分低频单片机都是这么工作的;
c. 外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器分频得到各种频率的时钟。 - 时钟系统和功耗
a. 时钟是指导器件工作的,那时钟的快慢就是决定了器件工作的状态。一般地,时钟频率越高,器件的性能越好。
b. 时钟系统和低功耗模式:现在的智能设备大多都有低功耗模式,低功耗模式的原理就是关闭某些当前非必须的器件,以降低功耗,关闭器件实际就是禁止器件的时钟信号。
c. 最佳时钟频率:每款芯片推出时,厂家都会提供一个最佳工作频率,在这个频率下芯片可以长期稳定且高效的工作。当然我们也可以通过代码去修改工作频率,当我们设置的工作频率超过最佳工作频率就叫超频。超频会带来更好的性能,但是芯片的发热也更严重,稳定性也会降低,可以短时间超频,但是不建议长时间超频。
二、 STM32时钟树
如图1所示为STM32F10xxx系列芯片的时钟树,分为三个部分:时钟源、系统时钟和以太网时钟。
图1 时钟树
1. 时钟源
STM32单片机的时钟源包含了HSE(High Speed External Clock signal)、HIS(High Speed Internal Clock signal)、LSE(Low Speed External Clock signal)、LSI(Low Speed Internal Clock signal)和PLL(Phase-Locked Loop)时钟。
a. HSE
High Speed External Clock signal,即高速的外部时钟
来源:无源晶振(3-25M)
去向:
① 128分频后作为RTC的时钟源之一;
② 直接作为系统时钟的时钟源;
③ 经过分频与倍频操作作为PLL1的时钟源;
④ 经过分频操作作为PLL2和PLL3的时钟源。
b. HIS
High Speed Internal Clock signal,高速的内部时钟
来源:芯片内部,大小为8M,当HSE故障时,系统时钟 会自动切换到HSI,直到HSE启动成功;
去向:
① 直接作为flash编程接口时钟;
② 直接作为系统时钟的时钟源;
③ 2分频后作为PLL时钟源。
c. LSE
LSE: low Speed External Clock signal,低速的外部时钟
来源:芯片内部,LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源;
去向:
直接作为RTC的时钟源之一。
d. LSI
LSI: low Speed Internal Clock signal,低速的内部时钟
来源:内部芯片,LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,LSI时钟频率大约40kHz(在30kHz和60kHz之间);
去向:
① 直接作为独立看门狗的时钟源;
② 直接作为RTC的时钟源之一。
e. PLL
锁相环时钟:PLLCLK
来源:HSE时钟的分/倍频;
去向:
① 直接作为系统时钟的时钟源之一;
② 预分频后作为外设(USB、OTG和FS)的时钟;
③ PLL2CLK与PLL3CLK输出至MCO;
④ PLL3CLK倍频后作为I2S2与I2S3的时钟源。
2. 系统时钟
SYSCLK:系统时钟,最高为72M(ST官方推荐的)
来源:HSI、HSE、PLLCLK(详见2);
注意:通常的配置是SYSCLK=PLLCLK=72M
去向:
① 预分频后作为HCLK到AHB总线、核心存储和DMA;
② 预分频后再8分频作为CORTEX系统定时器时钟;
③ 预分频后作为cortex内核时钟;
④ 预分频后为APB1总线的外设提供时钟,最大为36M;1或2倍频之后则为APB1总线的定时器2~7提供时钟,最大为72M;
⑤ 预分频后为APB2总线的外设提供时钟。1或2倍频之后为APB2总线的定时器1提供时钟,最大为72M;APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。
3. 以太网时钟
以太网MAC的时钟(TX、RX和RMII)是由外部PHY提供,本文不对此进行讨论。
三、 相关寄存器
参考手册:STM32F10xxx参考手册
1. HSE:
时钟控制寄存器(RCC_CR)
时钟中断寄存器 (RCC_CIR)
2. HIS:
时钟控制寄存器(RCC_CR)
时钟中断寄存器 (RCC_CIR)
3. LSE:
时钟中断寄存器 (RCC_CIR)
备份域控制寄存器 (RCC_BDCR)
4. LSI:
时钟中断寄存器 (RCC_CIR)
控制/状态寄存器 (RCC_CSR)
5. PLL:
时钟控制寄存器(RCC_CR)
时钟配置寄存器(RCC_CFGR)
时钟中断寄存器 (RCC_CIR)
6. MCO:
时钟配置寄存器(RCC_CFGR)
四、 总结
芯片的时钟功能是其工作运行的基础,所以在工程开始之前需要分析各外设的时序需求,将时钟调整至合理范围内。本文基于STM32的时钟树对单片机的时钟系统进行了分解,并根据时钟源的不同列出对应的寄存器介绍。
参考链接