STM32F7学习笔记12:时钟详解

Dr.Guo
发布于 2024-02-18 / 42 阅读
0
0

STM32F7学习笔记12:时钟详解

STM32F7学习笔记12:时钟详解

1. STM32F7时钟框架

下图为STMF7时钟配置框图

其中有如下时钟源:

  1. HSI:高速内部时钟,为RC振荡器,频率为16MHz
  2. HSE:高速外部时钟,能接外部时钟源,频率范围为4到26MHz
  3. LSI:低速内部时钟,为RC振荡器,频率为32KHz
  4. LSE:低速外部时钟,接频率为32.768kHz的石英晶体
  5. PLL:锁相环倍频输出,可选择HSI和HSE。

2. 系统时钟详解

2.1 HSE高速外部时钟

HSE高速外部时钟可以由有源晶振和无源晶振提供:

  • 当使用有源晶振时,时钟从OSC_IN引脚进入,OSC_OUT引脚悬空
  • 当选用无源晶振时,时钟从OSC_IN和OSC_OUT进入,并且要配谐振电容

如果我们使用HSE或者HSE经过PLL倍频之后的时钟作为系统时钟SYSCLK,当HSE故障时候,不仅HSE会被关闭, PLL也会被关闭,此时高速的内部时钟时钟信号HSI会作为备用的系统时钟,直到HSE恢复正常。

2.2 锁相环PLL

PLL主要作用时对时钟进行倍频,然后将时钟输出到各个功能部件。F7有两个PLL,一个是主PLL,另一个是PLLI2S。均由HSE和HSI提供输入信号。

主PLL有两路的时钟输出,第一个输出时钟PLLCLK用于系统时钟,F767里面最高是216M,第二和第三个输出用于提供其他一些外设的时钟。PLL2和PLL3主要用于提供外设的内核时钟。

HSE或者HSI经过PLL时钟输入分频因子M(1~63)分频后,成为VCO的时钟输入,VCO的时钟必须在1~2M之间,我们选择HSE=25M作为PLL的时钟输入,M设置为25,那么VCO输入时钟就等于1M。

分频:N分频就是把频率变为1/N。周期变为N倍。

倍频:N倍频就是把频率变为N倍。周期变为1/N倍。

2.3 系统时钟SYSCLK

系统时钟来源可以是:HSI、PLLCLK、HSE,具体的由时钟配置寄存器RCC_CFGR的SW位配置。我们这里设置系统时钟:SYSCLK = PLLCLK = 180M。如果系统时钟是由HSE经过PLL倍频之后的PLLCLK得到,当HSE出现故障的时候,系统时钟会切换为HSI=16M,直到HSE恢复正常为止。

2.4 AHB总线时钟HCLK

系统时钟SYSCLK经过AHB预分频器分频之后得到时钟叫APB总线时钟,即HCLK,分频因子可以是:[1,2,4,8,16,64,128,256,512],片上大部分外设的时钟都是经过HCLK分频得到,至于AHB总线上的外设的时钟设置为多少,得等到我们使用该外设的时候才设置,我们这里只需粗线条的设置好APB的时钟即可。我们这里设置为1分频,即HCLK=SYSCLK=180M。

2.5 APB1总线时钟PCLK1

APB1总线时钟PCLK1由HCLK经过低速APB预分频器得到,分频因子可以是:[1,2,4,8,16],PCLK1属于低速的总线时钟,最高为54M,片上低速的外设就挂载到这条总线上,比如USART2/3/4/5、SPI2/3,I2C1/2等。

2.6 APB2总线时钟PCLK2

APB2总线时钟PCLK2由HCLK经过高速APB2预分频器得到,分频因子可以是:[1,2,4,8,16],PCLK2属于高速的总线时钟,片上高速的外设就挂载到这条总线上,比如全部的GPIO、USART1、SPI1等。

3. 其他时钟

3.1 RTC时钟

RTCCLK 时钟源可以是 HSE 1 MHz( HSE 由一个可编程的预分频器分频)、 LSE 或者 LSI时钟。

3.2 独立看门狗时钟

独立看门狗时钟由内部的低速时钟LSI提供,大小为32KHZ。

3.3 I2S时钟

I2S时钟可由外部的时钟引脚I2S_CKIN输入,也可由专用的PLLI2SCLK提供,具体的由RCC 时钟配置寄存器 (RCC_CFGR)的I2SSCR位配置。

3.4 PHY以太网时钟

F767要想实现以太网功能,除了有本身内置的MAC之外,还需要外接一个PHY芯片,常见的PHY芯片有DP83848和LAN8720,其中DP83848支持MII和RMII接口,LAN8720只支持RMII接口。

野火F767开发板用的是RMII接口,选择的PHY芯片是LAN8720。使用RMII接口的好处是使用的IO减少了一半,速度还是跟MII接口一样。当使用RMII接口时,PHY芯片只需输出一路时钟给MCU即可。

3.5 USB PHY时钟

F767的USB没有集成PHY,要想实现USB高速传输的话,必须外置USB PHY芯片,常用的芯片是USB3300。当外接USB PHY芯片时,PHY芯片需要给MCU提供一个时钟。

3.6 MCO时钟输出

MCO是microcontroller clock output的缩写,是微控制器时钟输出引脚,主要作用是可以对外提供时钟,相当于一个有源晶振。F767中有两个MCO,由PA8/PC9复用所得。

MCO1所需的时钟源通过 RCC 时钟配置寄存器 (RCC_CFGR) 中的 MCO1PRE[2:0] 和 MCO1[1:0]位选择。

MCO2所需的时钟源通过 RCC 时钟配置寄存器 (RCC_CFGR) 中的 MCO2PRE[2:0] 和 MCO2位选择。


评论