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

devtools/2024/11/28 18:24:28/

在这里插入图片描述
微控制器 (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.ppmy.cn/devtools/137731.html

相关文章

使用OpenCV实现视频背景减除与目标检测

摘要 背景减除是计算机视觉中一种常用的技术,用于从视频流中分离前景对象。本文将介绍如何利用OpenCV库实现视频背景减除,并进一步通过形态学操作和轮廓检测来识别视频中的运动物体。通过一个具体的代码示例,我们将逐步演示整个流程。 1. 引…

利用爬虫爬取网页小说

需求分析 安装requests包 pip install requests目录采集地址: h t t p s : / / w w w . 3 b q g . c c / b o o k / 60417 / https://www.3bqg.cc/book/60417/ https://www.3bqg.cc/book/60417/ 章节采集地址: h t t p s : / / w w w . 3 b q g . c …

详细描述一下Elasticsearch更新和删除文档的过程?

大家好,我是锋哥。今天分享关于【详细描述一下Elasticsearch更新和删除文档的过程?】面试题。希望对大家有帮助; 详细描述一下Elasticsearch更新和删除文档的过程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 E…

C++-qt经验

qt下载安装 【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客 qt项目打包成软件 QT项目打包成软件进行发布的三种方式_qt打包-CSDN博客

生产环境中,nginx 最多可以代理多少台服务器,这个应该考虑哪些参数 ?怎么计算呢

生产环境中,nginx 最多可以代理多少台服务器,这个应该考虑哪些参数 ?怎么计算呢 关键参数计算方法评估步骤总结 在生产环境中,Nginx最多可以代理的服务器数量并没有一个固定的限制,它取决于多个因素,包括Ng…

Oracle-decode和case when的用法

-- case when 通用 功能比decode强大多了 -- decode 可以实现的 CASE WHEN都可以实现 -- decode 针对一个字段的值去判断 SELECT e.* ,DECODE(e.job, SALESMAN,销售员, PRESIDENT,董事长 ,分析师; --剩下的都是分析师 如果是确定的不建议这么写 ) AS new_job FROM em…

英语知识在线平台:Spring Boot技术应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

(笔记)简单了解ZYNQ

1、zynq首先是一个片上操作系统(Soc),结合了arm(PS)和fpga(PL)两部分组成 Zynq系统主要由两部分组成:PS(Processing System)和PL(Programmable L…