STM32时钟树

1.前言

  • 在对STM32编程时,代码第一步总是要开启外设时钟使能,在数据手册上可以看到所有外设都是挂载在时钟树下,所以时钟树到底是个什么玩意?本文在此介绍。

2.时钟树

  • 首先解释一下什么是时钟树,STM32的时钟树(Clock Tree)是指控制器内部时钟信号从源头到各个外设的分配和控制系统。它是一个复杂的网络结构,决定了CPU、总线和外设的工作频率。

2.1时钟的种类

  • 从数据手册可以看出,STM32系列的单片机又有四个基础时钟源,HSI振荡器时钟,LSI振荡器时钟,HSE振荡器时钟,HSI振荡器时钟,这四个时钟就是最基本的时钟来源,也就是时钟树的根,之后就是PLL锁相环SYSCLK系统时钟
  • 这几者的关系可以先看成这样的关系
  • 我们直接查看数据手册

    可以看到外设的最高频率可以达到170M,显然可以看到这四个基础时钟都无法直接提供170M的频率,那么这170M的时钟是哪来的呢?从上面的关系图可以看出,将HSE或者HSI接入PLL就能输出170M的频率了。
  • 系统时钟的来源:HSI振荡器时钟 HSE振荡器时钟 PLL锁相环 ,
  • 两个次级时钟源:LSI振荡器时钟 LSE振荡器时钟

2.2时钟树的框图


乍一看很复杂,但我们不需要看这么多,我们将其简化一下,只需要看红色部分就行

  • LSI(内部低速时钟):时钟信号由内部RC振荡电路产生,频率为32.768K
  • HSI(内部高速时钟):时钟信号由内部RC振荡电路产生,STM32G431有两个时钟源(16M和48M),一般用于独立看门狗
  • LSE(外部低速时钟):时钟信号由外部晶振提供,一般为32.768K,一般用于RTC实时时钟
  • HSE(外部高速时钟):时钟信号由外部晶振提供,范围为4-48M,主要是用该时钟
  • PLL锁相环:将时钟的信号进行放大
    简单介绍PLL锁相环,先看PLL的框图:

    鉴相器:通过比较输入输出的相位差,输出一定的电压信号
    低通滤波:滤除鉴相器输出的杂波
    压控振荡器:使输出信号的频率与低通滤波输出的频率保持一致
    那么我们只要在反馈通道上加上一个分频器,就能实现输出信号的放大