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

MCU(一) 时钟详解 —— 以 GD32E103 时钟树结构为例

在这里插入图片描述
微控制器 (MCU) 的时钟系统是系统运行的核心,它提供了各模块所需的时钟信号。本文以 GD32E103 系列 MCU 为例,详细讲解其 时钟树结构(Clock Tree)。通过理解时钟源、分配与预分频器设置,可以灵活配置系统时钟以实现高性能与低功耗平衡。

因为最近发现纯软件实现的AI应用并没什么竞争力,或者说被抄袭的成本比较低,复制也比较简单,于是重新开始上课学习MCU,顺便记录一点东西
在前面的文章如何在资源受限例如1核和1G内存的设备上运行一个合适的向量存储库及如何优化 有简单测试了下可能性,后续我会慢慢实现,做一个只能的玩偶~

时钟源

GD32E103 支持多种时钟源,提供不同的频率和应用场景:

  1. HSI (High-Speed Internal)

    • 内部高速RC振荡器,频率为 8MHz
    • 默认的系统启动时钟源,启动速度快。
  2. HSE (High-Speed External)

    • 外部高速晶振(通常为 4~32MHz)。
    • 提供精确、稳定的时钟信号,适合对频率精度要求高的场景。
  3. LSI (Low-Speed Internal)

    • 内部低速RC振荡器,频率为 40kHz
    • 用于低功耗模式或独立的 RTC(实时时钟)功能。
  4. LSE (Low-Speed External)

    • 外部低速晶振(通常为 32.768kHz)。
    • 主要用于 RTC 的时间保持。
  5. PLL (Phase-Locked Loop)

    • 相位锁定环倍频器,支持输入时钟的多倍频输出。
    • 倍频后可生成高达 120MHz 的主系统时钟,适合高速运算场景。

时钟分配与分频

时钟源经过分配和分频器后被用于不同模块:

1. 系统时钟路径

  • 系统时钟(CK_SYS)通过多路选择器选择以下来源:
    • HSI
    • HSE
    • PLL 输出
  • GD32E103 的系统时钟最高支持 120MHz

2. 预分频器

系统时钟通过预分频器分配到不同总线和外设:

  • AHB(Advanced High-Performance Bus)

    • 主总线,连接 CPU、SRAM、DMA 等核心模块。
    • 最大频率:120MHz
  • APB1(Advanced Peripheral Bus 1)

    • 低速外设总线(如 USART、I2C、定时器等)。
    • 最大频率:60MHz
  • APB2(Advanced Peripheral Bus 2)

    • 高速外设总线(如 GPIO、SPI 等)。
    • 最大频率:120MHz

3. 外设分频器

部分外设的时钟需要进一步调整:

  • 定时器
    • 可直接使用倍频后的 PLL 时钟。
  • ADC 分频器
    • 降低时钟频率以满足 ADC 的 40MHz 输入限制。

特殊用途的时钟

  1. USB 时钟

    • USB 模块需要精确的 48MHz 时钟。
    • 由 PLL 倍频输出的专用通道生成,确保符合 USB 协议。
  2. RTC 时钟

    • RTC 可选择 LSELSI 或 HSE 的低频分频信号作为时钟源。
    • 支持低功耗时间保持功能。

时钟配置举例:生成 120MHz 系统时钟

以下是实现 120MHz 系统时钟的一般步骤:

  1. 选择 HSE 作为输入时钟

    • 假设外部晶振频率为 8MHz
    • 配置 PLLPRESEL = 1(选择 HSE)。
    • 配置 PREVDIVSEL = 1(无分频,直接进入 PLL)。
  2. 设置 PLL 倍频系数

    • 设置 PLLMF = 15
    • PLL 输出频率为:
      [
      8 , \text{MHz} \times 15 = 120 , \text{MHz}
      ]
  3. 配置系统时钟选择器

    • 将系统时钟选择器设置为 10,选择 PLL 输出作为系统时钟。

动态切换时钟源

GD32E103 支持在运行时通过控制信号动态切换时钟源:

  • 00:HSI
  • 01:HSE
  • 10:PLL

例如,当外部晶振失效时,系统可自动切换到内部 HSI,保障时钟连续性。


总结

GD32E103 的时钟树结构设计灵活,能满足多种应用场景:

  • 高速运算: 通过 PLL 提供高达 120MHz 的系统主频。
  • 低功耗模式: 支持低速 RC 振荡器 (LSI) 和低速晶振 (LSE)。
  • 外设优化: AHB、APB1、APB2 总线分频器实现不同频率的精确匹配。

理解时钟树结构和时钟配置方式是优化系统性能和功耗的关键。

做了一些个练习,几乎所有的控制一开始就需要设置时钟,而且用逻辑分析仪分析I2C等数据传输时,也有单独的时钟线。据我目前唤醒的记忆理解,时钟应该是一切行为的最小周期(至少数字或编程层面吧),而不同的时钟频率也就对应了不同的速率。某些电机的控制需要脉冲信号的,我记得大概一个脉冲某些个时钟周期内给出一个高电平的1信号


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

相关文章:

  • CTF之密码学(摩斯密码)
  • [护网杯 2018]easy_tornado
  • 【dvwa靶场:File Upload系列】File Upload低-中-高级别,通关啦
  • 基于Python语言的Web爬虫设计源码
  • transformer学习笔记-神经网络原理
  • Oracle-表分区(范围分区、列分区、Hash分区、嵌套分区、自动扩展分区)
  • 3101.交替子数组计数
  • 2023年12月GESPC++一级真题解析
  • FFmpeg 音视频同步问题
  • 单片机将图片数组调出来显示MPU8_8bpp_Memory_Write
  • springboot视频网站系统的设计与实现(代码+数据库+LW)
  • 代码随想录打卡DAY20
  • C/C++基础知识复习(30)
  • 基于LLaMA-Factory微调Qwen2.5-1.5B-Instruct
  • 利用ChatGPT寻找科研创新点的方法
  • 从入门到精通数据结构----四大排序(上)
  • 搜索二维矩阵
  • D81【 python 接口自动化学习】- python基础之HTTP
  • CVE-2022-26201
  • JVM调优篇之JVM基础入门AND字节码文件解读
  • 2.mybatis整体配置
  • Scrapy管道设置和数据保存
  • 房屋结构安全监测系统守护房屋安全卫士
  • 【Opencv学习】PART1-图像基础处理
  • Python中的简单爬虫
  • 三菱PLC 梯形图内嵌ST编程说明(GX WORKS3)