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.mzph.cn/pingmian/62174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[HarmonyOS] 解决HMRouter路由地址无法抽取的问题

解决HMRouter路由地址无法抽取的问题 背景 最近开始学习HarmonyOS开发,搭建项目的时候采用了 HMRouter 路由框架,在项目里使用到路由跳转,官方链接在这: https://gitee.com/hadss/hmrouter/blob/master/HMRouterLibrary/README…

转录组数据挖掘(生物技能树)(第11节)下游分析

转录组数据挖掘(生物技能树)(第11节) 文章目录 R语言复习转录组数据差异分析差异分析的输入数据操作过程示例一:示例二:示例三:此代码只适用于人的样本 R语言复习 #### 读取 ####dat read.deli…

李宏毅机器学习课程知识点摘要(14-18集)

线性回归,逻辑回归(线性回归sigmoid),神经网络 linear regression , logistic regression , neutral network 里面的偏导的相量有几百万维,这就是neutral network的不同,他是…

WonderJourney 学习笔记

目录 原理 所有场景的参数: 原理 Pytorch3D:用于高性能的3D渲染,确保生成的场景具有高度的真实感和细节。GPT-4:通过生成场景描述,为每一帧提供丰富的背景故事和情感。MiDaS:用于深度估计,确…

一个vue项目如何运行在docker

将 Vue.js 应用程序通过 Docker 发布是一个非常常见的做法,它可以帮助你轻松地部署应用到不同的环境中。下面是一个简单的指南,介绍如何为 Vue.js 项目创建 Dockerfile 并进行构建和运行。 第一步:安装 Docker 确保你的开发机器上已经安装了…

[DL]深度学习_扩散模型正弦时间编码

1 扩散模型时间步嵌入 1.1 时间步正弦编码 在扩散模型按时间步 t 进行加噪去噪过程时,需要包括反映噪声水平的时间步长 t 作为噪声预测器的额外输入。但是最初与图像配套的时间步 t 是数字,需要将代表时间步 t 的数字编码为向量嵌入。嵌入时间向量的宽…

【超全】目标检测模型分类对比与综述:单阶段、双阶段、有无锚点、DETR、旋转框

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Llmcad: Fast and scalable on-device large language model inference

题目:Llmcad: Fast and scalable on-device large language model inference 发表于2023.09 链接:https://arxiv.org/pdf/2309.04255 声称是第一篇speculative decoding边缘设备的论文(不一定是绝对的第一篇),不开源…

Edge浏览器保留数据,无损降级退回老版本+禁止更新教程(适用于Chrome)

3 个月前阿虚就已经写文章告警过大家,Chromium 内核的浏览器将在 127 以上版本开始限制仍在使用 Manifest V2 规范的扩展:https://mp.weixin.qq.com/s/v1gINxg5vMh86kdOOmqc6A 像是 IDM、油猴脚本管理器、uBblock 等扩展都会受到影响,后续将无…

人工智能零基础入门学习笔记

学习视频:人工智能零基础入门教程 文章目录 1.简介2.应用3.演进4.机器学习5.深度学习6.强化学习7.图像识别8.自然语言9.Python10.Python开发环境11.机器学习算法1.多元线性回归项自实战:糖尿病回归预测 2.逻辑回归3.Softmax回归项目实战:鸢尾…

Spring Boot 3 集成 Spring Security(3)数据管理

文章目录 准备工作新建项目引入MyBatis-Plus依赖创建表结构生成基础代码 逻辑实现application.yml配置SecurityConfig 配置自定义 UserDetailsService创建测试 启动测试 在前面的文章中我们介绍了 《Spring Boot 3 集成 Spring Security(1)认证》和 《…

Wireshark抓取HTTPS流量技巧

一、工具准备 首先安装wireshark工具,官方链接:Wireshark Go Deep 二、环境变量配置 TLS 加密的核心是会话密钥。这些密钥由客户端和服务器协商生成,用于对通信流量进行对称加密。如果能通过 SSL/TLS 日志文件(例如包含密钥的…

Redis(概念、IO模型、多路选择算法、安装和启停)

一、概念 关系型数据库是典型的行存储数据库,存在的问题是,按行存储的数据在物理层面占用的是连续存储空间,不适合海量数据存储。 Redis在生产中使用的最多的是用作数据缓存。 服务器先在缓存中查询数据,查到则返回,…

Cobalt Strike 4.8 用户指南-第十一节 C2扩展

11.1、概述 Beacon 的 HTTP 指标由 Malleable Command and Control (Malleable C2) 配置文件控制。Malleable C2 配置文件是一个简单的程序,它指定如何转换数据并将其存储在事务中。转换和存储数据的同一程序(向后解释&#xff0…

哪里能找到好用的动物视频素材 优质网站推荐

想让你的短视频增添些活泼生动的动物元素?无论是搞笑的宠物瞬间,还是野外猛兽的雄姿,这些素材都能让视频更具吸引力。今天就为大家推荐几个超实用的动物视频素材网站,不论你是短视频新手还是老手,都能在这些网站找到心…

mysql之慢查询设置及日志分析

mysql之慢查询日志分析 1.临时开启慢查询日志2.永久开启慢查询日志 慢查询是指mysql提供的日志记录功能,用来记录执行时间超过设置阈值的sql语句,并将信息写入到日志文件中; 1.临时开启慢查询日志 注意: 1.以下命令需要连接进入到…

【快速入门 LVGL】-- 1、STM32 工程移植 LVGL

目录 一、LVGL 简述 二、复制一个STM32工程 三、下载 LVGL 四、裁剪 源文件 五、工程添加 LVGL 文件 六、注册 显示 七、注册 触摸屏 八、LVGL 心跳、任务刷新 九、开跑 LVGL 十、控件的事件添加、响应处理 十 一、几个好玩小事情 十 二、显示中文 ~~ 约定 ~~ 在…

小程序租赁系统开发的优势与应用解析

内容概要 随着科技的迅猛发展,小程序租赁系统应运而生,成为许多企业优化业务的重要工具。首先,它提升了用户体验。想象一下,用户只需轻轻一点,就能够浏览和租赁心仪的商品,这种便捷的过程使繁琐的操作大大…

LLM应用-prompt提示:RAG query重写、相似query生成 加强检索准确率

参考: https://zhuanlan.zhihu.com/p/719510286 1、query重写 你是一名AI助手,负责在RAG(知识库)系统中通过重构用户查询来提高检索效果。根据原始查询,将其重写得更具体、详细,以便更有可能检索到相关信…

Spring Boot 3 集成 Spring Security(2)授权

文章目录 授权配置 SecurityFilterChain基于注解的授权控制自定义权限决策 在《Spring Boot 3 集成 Spring Security(1)》中,我们简单实现了 Spring Security 的认证功能,通过实现用户身份验证来确保系统的安全性。Spring Securit…