STM32开发(3)----时钟树配置


前言

上一篇介绍STM32CubeMX安装和使用时,涉及到了时钟树的配置,本章来来详细介绍一下STM32时钟树的配置和原理

一、时钟树是什么?

在一个复杂电路中,可能会因为一些延时而产生短暂的中间状态,最终导致电路输出错误结果,因此时序在电路中极为重要。以时序电路控制输出,在每一级输出结果前对各个信号进行采样,从而使得电路中某些信号即使出现延时也可以保证各个信号的同步,可以避免电路中发生错误, 达到精确控制输出的效果。由于时序电路的重要且复杂, 在 MCU 设计时就设计了专门用于控制时序的电路,在芯片设计中称为时钟树。

STM32 本身非常复杂,外设非常的多,每个外设所需要的时钟频率各不相同(部分外设需要几时Mhz,而部分外设仅仅需要几Khz即可),同时在一个电路中,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,因此为了达到低功耗和EMC的目的, STM32 一般采取多时钟源的方法来解决这些问题,而且STM32默认不开启这些外设功能和时钟。 用户可以根据自己的需要决定 STM32 芯片是否使用这个功能,这个功能开关在 STM32主控中也就是各个外设的时钟。

下图为STM32F1的时钟树:
在这里插入图片描述

二、如何配置时钟树

这里想讲最主要的----如何配置时钟树,后续的一些概念放在后面将,这样子可以让大家快速的用起来,STM32CubeMX的时钟树配置如图
在这里插入图片描述
我们配置的一般步骤是:

  1. 设置时钟源
  2. 设置系统时钟 SYSCLK
  3. 设置 AHB 分频因子(决定 HCLK 等于多少)
  4. 设置 APB2 分频因子(决定 PCLK2等于多少)
  5. 设置 APB1 分频因子(决定 PCLK1 等于多少)
  6. 设置各个外设的分频因子;
    最终达到对于 SYSCLK、HCLK、 PCLK2、 PCLK1 这四个时钟的配置。

对于STM32F1系列,库函数的标准配置一般是: PCLK2 = HCLK = SYSCLK=PLLCLK = 72M(对于stm32f103c6t6来说,72MHz 是官方推荐使用的最高的稳定时钟频率),PCLK1=HCLK/2 = 36M。(即上图所示),这个也是我们用的最多的,当然,如果有特定需求,也可以根据外设的特定需求进行修改。

三、时钟树的组成

1.时钟源

对于 STM32F1,输入时钟源(Input Clock)主要包括 HSI, HSE, LSI, LSE。外部时钟源就是从外部通过接晶振的方式获取时钟源。内部时钟源,芯片上电即可产生,不需要借助外部电路。

高速外部振荡器 HSE (High Speed External Clock signal)

HSE 是高速的外部时钟信号,可以由有源晶振或者无源晶振提供,频率从 4-16MHZ 不等。当使用有源晶振时,时钟从 OSC_IN 引脚进入, OSC_OUT 引脚悬空,当选用无源晶振时,时钟从OSC_IN 和 OSC_OUT 进入,并且要配谐振电容。HSE 最常使用的就是 8M 的无源晶振

低速外部振荡器 LSE (Low Speed External Clock signal)

一般外部晶振使用外接 32.768kHz 石英晶体,主要作用于 RTC 的时钟源(RTC 时钟也可由 HSE/128 分频或者低速内部时钟信号 LSI得到)

高速内部振荡器 HSI(High Speed Internal Clock signal)

由内部 RC 振荡器产生,频率为 8MHz。该时钟源根据温度和环境的情况,频率漂移较大,一般不作为 PLL 的时钟来源。这里我们选 HSE 作为 PLL 的时钟来源。

低速内部振荡器 LSI(Low Speed Internal Clock signal)

由内部 RC 振荡器产生,频率为 40kHz,可作为独立看门狗的时钟源。

2.锁相环 PLL

在 STM32 主控中,锁相环的作用主要有两个部分:输入时钟净化和倍频。 前者是利用锁相环电路的反馈机制实现,后者我们用于使芯片在更高且频率稳定的时钟下工作。PLL 时钟来源可以有两个,一个来自 HSE,另外一个是 HSI/2。 HSI 是内部高速的时钟信号,但温漂比较大,一般不作为 PLL 的时钟来源,所以我们选 HSE 作为 PLL 的时钟来源。
在这里插入图片描述

3.系统时钟 SYSCLK

STM32 的系统时钟 SYSCLK 为整个芯片提供了时序信号,系统时钟来源可以是: HSI、 PLLCLK、 HSE,我们可以把主频通过 PLL 设置为 72MHz。也可以使用 HSI/2,那么可以得到最高主频 8MHz/2*16=64MHz,为了达到stm32f103c6t6芯片推荐最高主频72Mhz,我们这里使用PLL设置SYSCLK。前面讲到STM32 主控是时序电路链接起来的。对于相同的稳定运行的电路,时钟频率越高,指令的执行速度越快,单位时间能处理的功能越多。
在这里插入图片描述

4.时钟信号输出 MCO

MCO 是 microcontroller clock output 的缩写,是微控制器时钟输出引脚,主要作用是可以对外提供时钟,相当于一个有源晶振。 MCO 的时钟来源可以是:PLLCLK/2、 HSI、 HSE、 SYSCLK,除了对外提供时钟这个作用之外,我们还可以通过示波器监控 MCO 引脚的时钟输出来验证我们的系统时钟配置是否正确。STM32 允许通过设置, 通过 MCO 引脚输出一个稳定四个时钟信号可被选作 MCO 时钟: SYSCLK、HSI、HSE、PLL 时钟。
在这里插入图片描述

总结

本章对STM32设备树的配置以及设备树的组成元素进行了介绍,时钟树在STM32中至关重要,也是其实现低功耗和EMC的关键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶与花语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值