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

news2024/11/25 5:13:26

在这里插入图片描述
微控制器 (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 总线分频器实现不同频率的精确匹配。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247087.html

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

相关文章

【方案库】从单张照片快速重建3D场景:Flash3D详解

一、Flash3D是什么? Flash3D 是一项革命性的AI技术,能够从单张普通照片快速重建3D场景。简单来说,你只需要提供一张照片,Flash3D 就能帮你还原出这个场景的立体效果。这项技术在房地产、建筑设计、虚拟现实等多个领域都有着广泛的应用前景。 二、主要特点 一张就够:只需…

QT QFormLayout控件 全面详解

本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizonta…

如何在 Ubuntu 22.04 上安装 Metabase 数据可视化分析工具

简介 Metabase 提供了一个简单易用的界面,让你能够轻松地对数据进行探索和分析。通过本文的指导,你将能够在 Ubuntu 22.04 系统上安装并配置 Metabase,并通过 Nginx 进行反向代理以提高安全性。本教程假设你已经拥有了一个非 root 用户&…

c#:winform调用bartender实现打印(学习整理笔记)

效果 学习路径 C# winform调用Bartender进行自定义打印、批量打印、检索文件夹中的模板_哔哩哔哩_bilibili 一、初始环境搭建见: c#:winform引入bartender-CSDN博客https://blog.csdn.net/weixin_46001736/article/details/143989473?sharetypeblogdetail&s…

1123--日期类

目录 一 java 1. Date类 2. calendar类 3. 第三代日期类‘ 3.1 常用方法 3.2 格式化操作 一 java 1. Date类 2. calendar类 3. 第三代日期类‘ 3.1 常用方法 3.2 格式化操作

当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办

随着AI技术的飞速发展,3D数字人技术已成为驱动各行各业转型升级的重要力量。在这一背景下,2024山东3D数字人视频创作大赛应运而生,并在一番激烈的角逐后圆满落幕,为科技与创意的交融写下浓墨重彩的一笔。 11月20日,一…

InstantStyle容器构建指南

一、介绍 InstantStyle 是一个由小红书的 InstantX 团队开发并推出的图像风格迁移框架,它专注于解决图像生成中的风格化问题,旨在生成与参考图像风格一致的图像。以下是关于 InstantStyle 的详细介绍: 1.技术特点 风格与内容的有效分离 &a…

使用EFK收集k8s日志

首先我们使用EFK收集Kubernetes集群中的日志,本次实验讲解的是在Kubernetes集群中启动一个Elasticsearch集群,如果企业内已经有了Elasticsearch集群,可以直接将日志输出至已有的Elasticsearch集群。 文章目录 部署elasticsearch创建Kibana创建…

Rust 力扣 - 2266. 统计打字方案数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题可以先求按了多少次相同连续的按钮,所有的连续相同按钮表示的方案数的乘积就是本题答案 我们的关键问题就转换成了按n个连续相同按钮表示的方案数 设f(i)表示按i个连续相同按钮表示的方案数 如…

[Redis#0] iredis: linux上redis超好用的环境配置

目录 Features 特征 Install 安装 Pip Brew Linux的 Download Binary 下载 Binary Usage 用法 Using DSN 使用 DSN Change The Default Prompt更改默认提示 Configuration 配置 Keys Development 发展 Release Strategy 发布策略 Setup Environment 设置环境 De…

flutter 专题十七 Flutter Flar动画实战

Flutter Flar动画实战 在Flare动面出现之前,Flare动画大体可以分为使用AnimationController控制的基础动画以及使用Hero的转场动画,如果遇到一些复杂的场景,使用这些动画方案实现起来还是有难度的。不过,随着Flutter开始支持Flar…

Wekan看板安装部署与使用介绍

Wekan看板安装部署与使用介绍 1. Wekan简介 ​ Wekan 是一个开源的看板式项目管理工具,它的配置相对简单,因为大多数功能都是开箱即用的。它允许用户以卡片的形式组织和跟踪任务,非常适合敏捷开发和日常任务管理。Wekan 的核心功能包括看板…

使用ENSP实现静态路由

一、双路由器静态路由 1.项目拓扑 2.项目实现 (1)路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为192.168.1.1/24 ip ad…

3、集线器、交换机、路由器、ip的关系。

集线器、交换机、路由器三者的关系 1、集线器2、交换机(每个交换机是不同的广播域,ip地址起到划分广播域的作用)3、 路由器4、ip地址 1、集线器 一开始两台电脑通信就需要网线就可以,但是三台或者更多主机通信时,就需…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二十二集:制作游戏的对话系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作游戏的对话系统 1.通过转移点的门讲解制作对话系统2.以游戏的石碑为例制作确认能力界面总结 前言 hello大家好久没见,之所以隔了这么久…

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址:https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后,会有一个exe安装包,点击运行安装即可。 注意事项,如果Windows操…

Excel求和如何过滤错误值

一、问题的提出 平时,我们在使用Excel时,最常用的功能就是求和了,一说到求和你可能想到用sum函数,但是如果sum的求和区域有#value #Div等错误值怎么办?如下图,记算C列中工资的总和。 直接用肯定会报错&…

librdns一个开源DNS解析库

原文地址:librdns一个开源DNS解析库 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 介绍 librdns是一个开源的异步多功能插件式的解析器,用于DNS解析。 源代码地址:GitHub - vstakhov/librdns: Asynchrono…

成都睿明智科技有限公司怎么样可靠不?

在这个日新月异的数字时代,电商行业如同一股不可阻挡的洪流,席卷着每一个消费者的生活。而抖音,作为短视频与电商完美融合的典范,更是为无数商家开辟了一片全新的蓝海。在这片充满机遇与挑战的海洋中,成都睿明智科技有…

栈的应用,力扣394.字符串解码力扣946.验证栈序列力扣429.N叉树的层序遍历力扣103.二叉树的锯齿形层序遍历

目录 力扣394.字符串解码 力扣946.验证栈序列 力扣429.N叉树的层序遍历 力扣103.二叉树的锯齿形层序遍历 力扣394.字符串解码 看见括号,由内而外,转向用栈解决。使用两个栈处理,一个用String,一个用Integer 遇到数字:提取数字放入到数字栈…