当前位置: 首页 > article >正文

CM3/CM4时钟系统

CM3/4时钟系统

  • 1. CM3时钟系统
    • 1.1 输入时钟源------------------A
    • 1.2 锁相环PLL------------------B
    • 1.3 系统时钟SYSCLK--------C/D/E/F/G
  • 2. CM4时钟系统
    • 2.1 输入时钟源------------------A
    • 2.2 锁相环PLL------------------B
    • 2.3 系统时钟SYSCLK--------C/D/E
    • 2.4 时钟信号输出MCO--------F

  数字电路的知识告诉我们:任意复杂的电路控制系统都可以经由门电路组成的组合电路实现。STM32 内部也是由多种多样的电路模块组合在一起实现的。当一个电路越复杂,在达到正确的输出结果前,它可能因为延时会有一些短暂的中间状态,而这些中间状态有时会导致输出结果会有一个短暂的错误,这叫做电路中的“毛刺现象”,如果电路需要运行得足够快,那么这些错误状态会被其它电路作为输入采样,最终形成一系列的系统错误。为了解决这个问题,在单片机系统中,设计时以时序电路控制替代纯粹的组合电路,在每一级输出结果前对各个信号进行采样,从而使得电路中某些信号即使出现延时也可以保证各个信号的同步,可以避免电路中发生的“毛刺现象”,达到精确控制输出的效果。

  由于时序电路的重要性,因此在 MCU 设计时就设计了专门用于控制时序的电路,在芯片设计中称为时钟树设计。由此设计出来的时钟,可以精确控制我们的单片机系统,一个 MCU 越复杂,时钟系统也会相应地变得复杂,如 STM32F4 的时钟系统比较复杂,不像简单的 51 单片机一个系统时钟就可以解决一切。对于 STM32F4 系列的芯片,正常工作的主频可以达到 168Mhz,但并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及 RTC 只需要几十 Khz 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。

  STM32 本身非常复杂,外设非常的多,为了保持低功耗工作,STM32 的主控默认不开启这些外设功能。用户可以根据自己的需要决定 STM32 芯片要使用的功能,这个功能开关在 STM32主控中也就是各个外设的时钟。

1. CM3时钟系统

在这里插入图片描述
A 表示输入时钟源,可分为外部时钟源和内部时钟源;
B 为一个特殊的振荡电路锁相环“PLL”;
C 为系统时钟源选择器,决定 MCU 的系统主时钟“SYSCLK”的大小;AHB 预分频器将 SYSCLK 分频或不分频后分发给其他外设进行处理;
D 为定时器等外设的时钟源 APB1;
E 为定时器等外设的时钟源APB2;
F 为 Cortex-M 内核系统的时钟;
G 为 STM32 的时钟输出功能。

1.1 输入时钟源------------------A

2 个外部时钟源:外部时钟源就是从外部通过接晶振的方式获取时钟源,故而都有精度高的优点。

  • 高速外部振荡器 HSE:外接石英/陶瓷谐振器,频率为 4MHz~26MHz。本开发板使用的是 8MHz。
  • 低速外部振荡器 LSE:外接 32.768kHz 石英晶体,主要作用于 RTC 的时钟源。


2 个内部时钟源:内部时钟源就是芯片上电即可产生,不需要借助外部电路。

  • 高速内部振荡器 HSI:由内部 RC 振荡器产生,频率为 8MHz。芯片上电时默认由内部的 HSI 时钟启动。
  • 低速内部振荡器 LSI:由内部 RC 振荡器产生,频率为 40kHz,可作为独立看门狗的时钟源。

1.2 锁相环PLL------------------B

锁相环是自动控制系统中常用的一个反馈电路,在 STM32 主控中,锁相环的作用主要有两个部分:输入时钟净化和倍频。
输入时钟净化是利用锁相环电路的反馈机制实现;
输入时钟倍频用于使芯片在更高且频率稳定的时钟下工作。

在这里插入图片描述

在 STM32 中,锁相环的输出也可以作为芯片系统的时钟源。


标号 ①由寄存器 RCC_CFGR 的 bit17 位控制(HSE不分频/HSE2分频),经过 HSE 分频器处理后的输出振荡时钟信号比直接输入的时钟信号更稳定。

标号 ②是 PLL 时钟源的选择器,由寄存器 RCC_CFGR 的 bit16 位进行控制,选择 HSIHSE 作为输入源。

标号 ③是 PLL 倍频系数,由寄存器 RCC_CFGR 的 bit8~21 (PLLMUL)位进行设置,设置范围是 2~16。


例如:要实现 72MHz 的主频率,我们通过选择 HSE 不分频作为 PLL 输入的时钟信号,即输入 8Mhz,通过标号③选择倍频因子,可选择 2-16 倍频,我们选择 9 倍频,这样可以得到时钟信号为 8*9=72MHz。

1.3 系统时钟SYSCLK--------C/D/E/F/G

  STM32 的系统时钟 SYSCLK 为整个芯片提供了时序信号。我们已经大致知道 STM32 主控是时序电路链接起来的。对于相同的稳定运行的电路,时钟频率越高,指令的执行速度越快,单位时间能处理的功能越多。STM32 的系统时钟是可配置的,在 STM32F4 系列中,它可以为HSI、PLLCLK、HSE 中的一个,通过 CFGR 的位 SW[1:0]设置。
  如图可知,AHB、APB1、APB2、内核时钟等时钟通过系统时钟分频得到。

在这里插入图片描述

标号 C 是系统时钟输入选择【外部高速时钟 HSE(8M)、内部高速时钟 HSI(8M)、经过倍频的 PLL CLK(72M)】
标号 D 是AHB 预分频器【分频系数为 1,2,4,8,16,32,64,128,256】
标号 E 是低速 APB1 预分频器【分频因子未 1,2,4,8,16】,片上低速的外设就挂载在该总线上,例如有看门狗定时器定时器 2/3/4/5/6/7RTC 时钟USART2/3/4/5SPI2(I2S2)SPI3(I2S3)I2C1 I2C2CANUSB 设备2 个 DAC
标号 F 是高速 APB2 预分频器【分频因子未 1,2,4,8,16】,与 APB2 高速总线链接的外设有外部中断唤醒控制7 个通用目的输入/输出口(PA、PB、PC、PD、PE、PF 和 PG)定时器 1定时器 8SPI1USART13 个 ADC 内部温度传感器

AHB 总线时钟直接作为 SDIOFSMCAHB 总线Cortex 内核存储器DMA的 HCLK 时钟,并作为 Cortex 内核自由运行时钟 FCLK。

在这里插入图片描述

标号 H 是USB CLK,是一个通用串行接口时钟,时钟来源于 PLLCLK。
标号 I 是MCO 输出内部时钟,STM32 的一个时钟输出 IO(PA8),它可以选择一个时钟信号输出,可以选择为 PLL 输出的 2 分频、HSI、HSE、或者系统时钟。这个时钟可以用来给外部其他系统提供时钟源。时钟的选择由时钟配置寄存器(RCC_CFGR)中的 MCO[2:0]位控制。
标号 J 是RTC 定时器,其时钟源为 HSE/128、LSE 或 LSI。

2. CM4时钟系统

在这里插入图片描述
A 表示输入时钟源,可分为外部时钟源和内部时钟源;
B 为一个特殊的振荡电路锁相环“PLL”;
C 为系统时钟源选择器,决定 MCU 的系统主时钟“SYSCLK”的大小;AHB 预分频器将 SYSCLK 分频或不分频后分发给其他外设进行处理;
D 为内核系统的时钟和使能单元;
E 为定时器以及其它外设的时钟源 APB1/APB2;
F 为 STM32 的时钟输出功能;

2.1 输入时钟源------------------A

2 个外部时钟源:外部时钟源就是从外部通过接晶振的方式获取时钟源,故而都有精度高的优点。

  • 高速外部振荡器 HSE:外接石英/陶瓷谐振器,频率为 4MHz~26MHz。本开发板使用的是 8MHz。
  • 低速外部振荡器 LSE:外接 32.768kHz 石英晶体,主要作用于 RTC 的时钟源。


2 个内部时钟源:内部时钟源就是芯片上电即可产生,不需要借助外部电路。

  • 高速内部振荡器 HSI:由内部 RC 振荡器产生,频率为 16MHz。芯片上电时默认由内部的 HSI 时钟启动。
  • 低速内部振荡器 LSI:由内部 RC 振荡器产生,频率为 32kHz,可作为独立看门狗的时钟源。

2.2 锁相环PLL------------------B

锁相环是自动控制系统中常用的一个反馈电路,在 STM32 主控中,锁相环的作用主要有两个部分:输入时钟净化和倍频。
输入时钟净化是利用锁相环电路的反馈机制实现;
输入时钟倍频用于使芯片在更高且频率稳定的时钟下工作。

在这里插入图片描述

在 STM32 中,锁相环的输出也可以作为芯片系统的时钟源。


标号 ① 是 PLL 时钟源的选择器,由寄存器 RCC_PLLCFGR 的 bit22 位进行控制,选择 HSIHSE 作为输入源。
标号 ② 是 PLL 输入时钟的分频系数,由寄存器 RCC_PLLCFGR 的 bit0~5 (PLLM)位进行设置,设置范围是 0~63。
标号 ③ 是 PLL 倍频系数,由寄存器 RCC_PLLCFGR 的 bit6~14 (PLLN)位进行设置,设置范围是 192~432。


例如:要实现 168MHz 的主频率,通过选择 HSE 分频作为 PLL 输入的时钟信号,输入 8Mhz,8 分频,即 1MHz,通过标号③选择倍频因子,我们选择 336 倍频,这样可以得到时钟信号为 1*336=336MHz,然后经过 2 分频,得到 168MHz。

2.3 系统时钟SYSCLK--------C/D/E

  STM32 的系统时钟 SYSCLK 为整个芯片提供了时序信号。我们已经大致知道 STM32 主控是时序电路链接起来的。对于相同的稳定运行的电路,时钟频率越高,指令的执行速度越快,单位时间能处理的功能越多。STM32 的系统时钟是可配置的,在 STM32F4 系列中,它可以为HSI、PLLCLK、HSE 中的一个,通过 CFGR 的位 SW[1:0]设置。
  如图可知,AHB、APB1、APB2、内核时钟等时钟通过系统时钟分频得到。
在这里插入图片描述

标号 ④ 是系统时钟输入源选择【外部高速时钟 HSE(8M)、内部高速时钟 HSI(16M)、经过倍频的 PLL CLK(168M)】
标号 ⑤ 是AHB 预分频器【分频系数为 1,2,4,8,16,32,64,128,256,512】
标号 ⑥ 是低速 APB1 预分频器【分频系数为 1,2,4,8,16】,片上低速的外设就挂载在该总线上,例如有看门狗定时器定时器 2/3/4/5/6/7RTC 时钟USART2/3/4/5SPI2(I2S2) SPI3(I2S3)I2C1~3CAN2 个 DAC
标号 ⑦ 是高速 APB2 预分频器【分频系数为 1,2,4,8,16】,高速总线连接的外设有定时器 1/8/9/10/11SPI1USART1USART63 个 ADCSDIO 接口
标号 ⑧决定定时器时钟频率,该位由硬件自动设置【APB 预分频器为 1,定时器时钟频率等于 APB 域的频率,否则,等于 APB 域的频率的两倍】

AHB 总线时钟直接作为 GPIO(A\B\C\D\E\F\G\H\I\)以太网DCMIFSMCAHB总线Cortex 内核存储器DMA 的 HCLK 时钟,并作为 Cortex 内核自由运行时钟 FCLK
在这里插入图片描述
标号 ⑨ 是 RTC 时钟,其时钟源有三个途径:HSE/x(x = 2~31)、LSE 或 LSI。

2.4 时钟信号输出MCO--------F

  

标号 ⑩ 是 MCO 时钟输出,其作用是为外部器件提供时钟。MCO1、MCO2 两个时钟输出引脚给外部器件提供时钟源(分别由 PA8 和 PC9 复用功能实现),每个引脚可以选择一个时钟源,通过 RCC 时钟配置寄存器 (RCC_CFGR)进行配置。
标号 ⑪ MCO1 和 MCO2 的预分频器,取值范围均为:1~5。
标号 ⑫ MCO1(外部器件的输出时钟 1)时钟源,MCO2(外部器件的输出时钟 2)时钟源。


http://www.kler.cn/a/465051.html

相关文章:

  • STM32-笔记28-蓝牙模块
  • SQL 总结
  • 125个Docker的常用命令
  • 数据库-MySQL-limit优化(全面 易理解)
  • 小米15震撼发布:手机吊起一人一椅,创新极限测试
  • 基于微信小程序的面部动作检测
  • 百度二面,MySQL 怎么做权重搜索?
  • SQL 中的 EXISTS
  • 开源自荐 - NoteGen 一款专注于记录和写作的跨端 AI 笔记
  • Web3的核心理念:去中心化如何改变互联网结构
  • Linux和ROS(Robot Operating System)在底层实现上的差异
  • 记一次 dockerfile 的循环依赖错误
  • 【three.js】场景搭建
  • [极客大挑战 2019]Secret File
  • 小程序组件 —— 22 组件案例 - 轮播区域绘制
  • Ansible Jinja2 语法简介及使用
  • Oracle 数据库使用SPM固定执行计划
  • 在Ubuntu系统中生成授信域名https证件文件
  • 利用Python爬虫获取店铺所有商品:技术实践与应用指南
  • Netty学习 - 编译Netty4.2