单片机的时钟源

文章目录

  • 系统时钟:指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()
相关推荐
promising-w2 小时前
线性电源和开关电源
单片机·嵌入式硬件
BackCatK Chen2 小时前
TMC2240 芯片数据手册解读|第二篇MC2240 芯片电气规格与封装信息
嵌入式硬件·步进电机驱动·tmc2240·tmc2240 数据手册解读·电气参数·封装信息·硬件选型
老师用之于民2 小时前
【DAY29】DS18B20 传感器特性、时序协议及 51 单片机驱动开发
c语言·驱动开发·单片机·嵌入式硬件
-Try hard-2 小时前
单片机 | 温度传感器(DS18B20)
单片机·嵌入式硬件
天天爱吃肉82182 小时前
【电机双闭环控制问答:PI 输出为何不同?测功机台架选型有多关键】
功能测试·嵌入式硬件·信息可视化·汽车
学嵌入式的小杨同学3 小时前
STM32 进阶封神之路(二十四):低功耗实战全攻略 —— 电池供电传感器节点(RTC 唤醒 + DHT11 采集 + 功耗优化)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
电子工程师成长日记-C513 小时前
51单片机热敏电阻测温
单片机·嵌入式硬件·51单片机
Hello World . .3 小时前
51单片机——UART 串口通信
网络·嵌入式硬件·51单片机
熬夜有啥好3 小时前
51 单片机基础架构与最小系统详解
单片机·嵌入式硬件·51单片机