单片机的时钟源

文章目录

  • 系统时钟:指CPU运转所使用的时钟频率,一般是在内部或外部时钟信号源频率的基础上,经过分频和倍频而来,频率比信号源频率要高

锁相环PLL

  • 产生可编程的其他频率的时钟信号
  • PLL工作的基本原理是将压控振荡器的输出经过分频后与基准信号共同输入到鉴相器PD,PD通过比较这两个信号的频率差,输出一个代表两者差异的信号,再经过低通滤波器转变成一个直流脉冲电压去控制VCO使它的频率改变。这样经过一个很短的时间,VCO的输出就会稳定下来。所以PLL并不是直接对晶振进行倍频,而是将频率稳定的晶振作为基准信号,与PLL内部振荡电路生成的信号分频后进行比较,使PLL输出的信号频率稳定

基本频率源

精度:ppm的概念,百万分之一,例如:50ppm 相当于 0.005%,振荡1000,000次,误差50次

片内集成的RC振荡源

  • 谐振频率: f 0 = 1 2 π R C f_0=\frac{1}{2\pi RC} f0=2πRC1
  • 特点:
    • 起振快,但精度低,一般在1%左右
    • 可靠性高,是STM32默认的时钟源
    • 对于时钟精度要求不高的场合,可以节省片外时钟源的成本
    • 对于如USB、以太网、I2S和RTC等不适合使用

片外晶体

石英晶体谐振器

  • 特点:精度高(几十ppm),价格便宜,需要外部匹配相应的负载电容



陶瓷谐振器

  • 特点:精度略低(几千ppm),价格便宜,需要外围电路起振,类似无源晶体谐振器

与单片机的接口

起振原理

  • 皮尔斯振荡电路

片外时钟源

有源晶振

  • 特点:精度高(几十ppm),不用外围电路,通电就能产生相应频率的方波,价格贵。有带温度补偿等高精度型号


与单片机接口

时钟源的配置

系统时钟(SYSCLK)

  • 系统时钟(SYSCLK)可由以下四种不同的时钟源驱动
    • HSI:(high-speed internal RC oscillator clock)高速内部RC振荡器时钟
    • MSIS:(multi-speed internal RC oscillator clock)多速度内部RC振荡器时钟
    • HSE:(high-speed external crystal or clock)高速外部晶体或时钟,一般范围为4至50 MHz
    • PLL1时钟

附加时钟源

  • MSIK:(multi-speed internal RC oscillator clock used for peripherals kernel clocks)用于外设内核时钟的多速内部RC振荡器时钟
  • LSI:(low-speed internal RC oscillator clock)低速内部RC振荡器时钟,32 kHz/250 Hz,用于驱动独立看门狗,并可选择用于RTC以实现从停止/待机模式自动唤醒
  • LSE:(low-speed external crystal or clock)低速外部晶振/时钟,必须是32.768 kHz,可选择驱动实时时钟(rtc_ck)
  • HSI48:(High-speed internal 48 MHz RC oscillator clock)48 MHz内部RC时钟,可驱动OTG_FS、USB、SDMMC和随机数发生器(RNG)
  • SHSI:(secure high-speed internal RC oscillator clock)安全高速内部RC时钟,频率为48MHz,驱动SAES加密模块
  • PLL2和PLL3时钟

MSI(MSIS and MSIK)时钟

  • MSI由内部的RC振荡器产生
  • 每种振荡器有一个预分频器,可以1,2,3,或4 分频
  • MSIS可以选作系统时钟
  • MSIK可以选作一些外设的核心时钟

stm32u575时钟树

各个总线最大频率

  • 系统时钟的最大频率是 160 MHz
  • 复位后,MSIS被选作系统时钟源,频率是 4MHz
  • 不同电压范围下,各个总线的最大频率见下表

获取当前系统时钟的方法

  • HAL库函数,在 stm32u5xx_hal_rcc.c 中,头文件是 stm32u5xx_hal_rcc.h
c 复制代码
uint32_t HAL_RCC_GetSysClockFreq(void);

时钟输出能力

MCO

  • 使用PA8脚,对外输出
  • 主要功能:
    • 可以作为其他外设的时钟源
    • 可以观察相应的波形是否符合预期

LSCO

  • 使用PA2脚,对外输出

RCC 相关寄存器

复位相关寄存器

  • 寄存器命名规则:RCC_XXXXRSTRn
  • 对应的位清零为无效;置位为复位对应的外设
    • 外设相关寄存器置为复位值
    • 外设相关功能到上电复位状态
  • HAL库相关操作宏函数
    • 在库函数头文件:stm32u5xx_hal_rcc.h
    • 定义为 __HAL_RCC_外设名称_FORCE_RESET()
    • 例如: __HAL_RCC_GPIOA_FORCE_RESET()

时钟控制相关寄存器

  • 寄存器命名规则:RCC_XXXXENRn
  • 对应的位 清零为 不使能时钟,相当于关闭功能;置位为使能时钟,功能允许使用
  • 由CubeMX生成的初始化代码,已经完成了相关的配置
  • HAL库相关操作宏函数
    • 在库函数头文件:stm32u5xx_hal_rcc.h
    • 时钟使能,定义为 __HAL_RCC_外设名称_CLK_ENABLE()
    • 例如: __HAL_RCC_GPIOA_CLK_ENABLE()
    • 时钟无效,定义为 __HAL_RCC_外设名称_CLK_DISABLE()
    • 例如: __HAL_RCC_GPIOA_CLK_DISABLE()
相关推荐
LCG元12 小时前
STM32项目实战:基于STM32F103的智能农业监控系统
stm32·单片机·嵌入式硬件
ACP广源盛1392462567312 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
一起搞IT吧14 小时前
Android性能系列专题理论之十:systrace/perfetto相关指标知识点细节含义总结
android·嵌入式硬件·智能手机·性能优化
Truffle7电子14 小时前
STM32CubeIDE/Programmer/Touch GFX 应用
stm32·单片机·嵌入式硬件
constant_LDX15 小时前
步进电机开发(一、硬件设计)
单片机·嵌入式硬件
北山有鸟16 小时前
修改源码法和插件法
嵌入式硬件·学习
richxu2025100116 小时前
嵌入式学习之路->stm32篇->(14)通用定时器(上)
stm32·单片机·嵌入式硬件·学习
Deitymoon16 小时前
STM32——串口通信(USART)
单片机·嵌入式硬件
iCxhust16 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
Deitymoon18 小时前
STM32——外部中断按键控制led
stm32·单片机·嵌入式硬件