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

MCU-芯片时钟与总线和定时器关系,举例QSPI

时钟源:

时钟源为系统时钟提供原始频率信号,系统时钟则通过(分频、倍频、选择器)成为整个芯片的“主时钟”,驱动 CPU 内核、总线(AHB、APB)及外设的运行。

  • 内部时钟源:
    • HSI(高速内部时钟):64 MHz,配合 PLL1 用于系统时钟
    • HSI48(高速内部时钟):48 MHz,HSI48 是内部高精度时钟源,频率为 48Mhz,配合 CRS 可以直接作为 USB 的时钟源使用
    • CSI(低功耗内部时钟):4 MHz
    • LSI(低速内部时钟):32 kHz
  • 外部时钟源:
    • HSE(高速外部时钟):4-48 MHz(通常使用25 MHz的外部晶振
    • LSE(低速外部时钟):32.768 kHz
  • PLL配置: 通过 PLL1 可以将时钟频率提升到最高 400 MHz,用于系统时钟(SYSCLK)

PLL1 锁相环,该 PLL 主要用到两路输出:pll1_p_ck 和 pll1_q_ck,

pll1_p_ck 一般用于 SYSCLK 的时钟源,最终作为 CPU、 SysTick、 AXI、 AHB1~4 和 APB1~4 等的时钟源

pll1_q_ck 则可以通过 PKSU 选择作为部分外设的内核时钟( perx_ker_ck),如 FMC、 QSPI、SDMMC1/2 等

 

时钟源在芯片中的划分和使用:

  • System时钟:系统时钟通常是最高频率的时钟源,用于整个微控制器的核心和外设时钟,包括CPU时钟、外设总线( APB、AHB 或 AXI)、存储器等,它决定了系统的整体运行速度。系统时钟一般用HSI(高速内部时钟)HSE(高速外部时钟)PLL(锁相环)
  • RTC时钟:主要负责时间和日期的保持,即使在系统断电时也能继续运行。它通常用于日历、闹钟和自动唤醒功能。RTC时钟一般用LSE(低速外部时钟)LSI(低速内部时钟)
  • D1 域,是高性能域,包括 CPU、SysTick、AXI、AHB3 和 APB3等时钟,CPU 可以从 TCM 和 Cache 中提取紧急的或优先级较高的用户程序,在 400M 的主频下执行,确保实现最快速响应。
  • D2 域,通信接口域,包括 AHB1、AHB2、APB1 和 APB2 等时钟,定时器的时钟都是在 D2 域进行控制。此域主要进行数据通信工作,减轻 CPU 的负担。
  • D3 域,数据批处理域,包括 AHB4 和 APB4 等时钟,此部分中的 ADC 可以在整个系统深度休眠时仍然进行数据处理。在电池驱动的情况下,D3 可以保证在低功耗条件下仍然进行必要的数据处理工作。

定时器:

  • SysTick:为操作系统(如 FreeRTOS)提供周期性中断(称为滴答中断),用于任务调度。是 ARM Cortex-M 内核的内置定时器,其时钟源通常直接取自 SYSCLK(或 SYSCLK 的分频)。
  • 定时器分为基本定时器(Basic)​、通用定时器(General-purpose)​、高级定时器(Advanced)和低功耗定时器(LPTIM)​
    • 系统时钟(SYSCLK)驱动 CPU 内核和所有定时器:外设定时器(基本、通用、高级)的时钟 并非直接来自 SYSCLK,而是通过 APB 总线时钟间接驱动。
      • APB 分频系数 = 1:APB 时钟 = SYSCLK
      • APB 分频系数 ≠1(如 2/4/8):APB 时钟 = SYSCLK / 分频系数,但定时器时钟自动 ×2。
    • 基本定时器(Basic):仅支持内部时钟,无输入/输出,只能生成周期性中断或触发信号。(类似“闹钟”)比如定时触发 DAC 输出更新,用于非精确延时需求。
    • 通用定时器(General-purpose):测量外部信号的脉冲宽度或频率,输入捕获:测量外部信号的脉冲宽度或频率,输出比较:生成 PWM 波形。
    • 高级定时器(Advanced):用于高精度时间,比如以太网时间同步IEEE1588,提供高精度时钟源(如100 MHz),驱动ETH的系统时间计数器。
    • 定时器的使用要根据总线连接的外设的频率来设计:

举例 QSPI 总线说明:

1. 使用 HSE(高速外部时钟)RCC_HSE_ON 作为时钟源,频率为 25 MHZ,如果设置 CPU 的频率为 400 MHZ,也就是 pll1_p_ck 输出 400 MHZ,需要设置 PLL1 的分频系数,DIVM1=5, DIVN1=160, DIVP1=2。计算公式如下:

2. CPU的频率是 400 MHZ,操作系统的滴答时钟也是 400 MHZ

3. 对于通信接口 QSPI,它属于 D1 域的 AHB3 - RCC_AHB3ENR_QSPIEN 总线,我设置 AHB3 的分频系数 RCC_HCLK_DIV2 2,所以 AHB3总线的频率是 200 MHZ。(具体根据现实需要设置,要考虑到整个D1域的AHB3频率)

4. 因为 W25Q256 Q-FLASH 最大支持 104 MHZ 的时钟,所以我们需要将 AHB3 总线进行二分频,也就是 QSPI_Handler.Init.ClockPrescaler 等于 1,所以此时 QSPI 的速率是 100 MHZ。

5. 100 MHZ QSPI 总线,他的周期是 1 / 100*10000000 = 10 ns,也就是每个上升沿的周期是 10 ns;片选 QSPI_CS_HIGH_TIME_5_CYCLE 高电平时间为5个时钟(10*5=50ns),即手册里面的 tSHSL 参数(为了确保QSPI接口在数据传输过程中有足够的时间进行片选信号的切换和稳定)

相关文章:

MCU-芯片时钟与总线和定时器关系,举例QSPI

时钟源: 时钟源为系统时钟提供原始频率信号,系统时钟则通过(分频、倍频、选择器)成为整个芯片的“主时钟”,驱动 CPU 内核、总线(AHB、APB)及外设的运行。 内部时钟源: HSI&#x…...

力扣热题100(方便自己复习,自用)

力扣热题100 1. 两数之和 - 力扣(LeetCode) 查找两数之和是不是等于target也就是我们找到一个数之后,用target将其减掉,再寻找应当对应的元素是什么每找到一个数,我们就将其放在集合中,因为集合中可以去重…...

暂存合并分支

合并分支代码,冲突过多,没解决完 想切换分支,可以把合并暂存 先先 git add . 再git stash 恢复搁置: 查看当前的搁置列表: git stash list恢复特定的搁置 如果你想恢复特定的搁置更改,可以指定索引&a…...

力扣hot100——三数之和(双指针)

题目:三数之和 排序 双指针 本题的难点在于如何去除重复解。 算法流程: 1、特判,对于数组长度 n,如果数组为 null 或者数组长度小于 3,返回 []。 2、对数组进行排序。 3、遍历排序后数组: &#xff08…...

技术分享 | MySQL内存使用率高问题排查

本文为墨天轮数据库管理服务团队第51期技术分享,内容原创,如需转载请联系小墨(VX:modb666)并注明来源。 一、问题现象 问题实例mysql进程实际内存使用率过高 二、问题排查 2.1 参数检查 mysql版本 :8.0.…...

分享一个精灵图生成和拆分的实现

概述 精灵图(Sprite)是一种将多个小图像合并到单个图像文件中的技术,广泛应用于网页开发、游戏开发和UI设计中。在MapboxGL中,跟之配套的还有一个json文件用来记录图标的大小和位置。本文分享基于Node和sharp库实现精灵图的合并与…...

AI日报 - 2025年3月21日

🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI成立安全委员会,加速AGI治理框架构建 ▎💼 商业动向 | 微软发布医疗大模型DAX Copilot 3.0,覆盖全球临床场景 ▎📜 政策追踪 | 中国发布…...

MongoDB 配合python使用的入门教程

MongoDB 入门教程 1. 安装 MongoDB 首先,你需要在你的机器上安装MongoDB。你可以从 MongoDB官网 下载并安装 Community 版本。安装完成后,启动MongoDB服务。 # 在Linux/Mac上启动MongoDB mongod# 在Windows上,你可以通过Windows服务启动Mo…...

函数:形参和实参

在函数的使用过程中分为实参和形参,实参是主函数实际调用的值而形参则是给实参调用的值,如果函数没被调用则函式不会向内存申请空间,先用一段代码演示 形参: int test(int x ,int y ) {int z 0;z x y;return z; } 为何会叫做…...

【C#知识点详解】ExcelDataReader介绍

今天来给大家介绍一下ExcelDataReader,ExcelDataReader是一个轻量级的可快速读取Excel文件中数据的工具。话不多说直接开始。 ExcelDataReader简介 ExcelDataReader支持.xlsx、.xlsb、.xls、.csv格式文件的读取,版本基本在2007及以上版本,支…...

Vala编程语言教程-控制结构

控制结构 while (a > b) { a--; } 会重复递减a&#xff0c;每次迭代前检查a是否大于b。 do { a--; } while (a > b); 会重复递减a&#xff0c;每次迭代后检查a是否大于b。 for (int a 0; a < 10; a) { stdout.printf("%d\n", a); } 会先将a初始化为0…...

《视觉SLAM十四讲》ch13 设计SLAM系统 相机轨迹实现

前言 相信大家在slam学习中&#xff0c;一定会遇到slam系统的性能评估问题。虽然有EVO这样的开源评估工具&#xff0c;我们也需要自己了解系统生成的trajectory.txt的含义&#xff0c;方便我们更好的理解相机的运行跟踪过程。 项目配置如下&#xff1a; 数据解读&#xff1a; …...

服务的拆分数据的迁移

参考&#xff1a; 数据迁移调研...

在类Unix终端中如何实现快速进入新建目录

&#x1f6aa; 前言 相信喜欢使用终端工作的小伙伴或多或少会被一个小地方给膈应&#xff0c;那就是每次想要新建一个文件夹并且进入之&#xff0c;那么就需要两条指令&#xff1a;mkdir DIR和cd DIR&#xff0c;有些人可能要杠了&#xff0c;我一条指令也能&#xff0c;mkdir…...

01分数规划,二分法,题目练习

一、01分数规划 1.1 01分数规划 01分数规划用来求一个分式的极值。模型如下&#xff1a; 给出 a i a_i ai​ 和 b i b_i bi​&#xff0c;求一组 w i ∈ { 0 , 1 } w_i \in \{ 0, 1 \} wi​∈{0,1}最小化或最大化 ∑ i 1 n a i w i ∑ i 1 n b i w i \frac{\sum_{i1…...

TG电报群管理机器人定制开发的重要性

在Telegram&#xff08;电报&#xff09;用户突破20亿、中文社群规模持续扩张的背景下&#xff0c;定制化群管理机器人的开发已成为社群运营的战略刚需。这种技术工具不仅解决了海量用户管理的效率难题&#xff0c;更通过智能化功能重构了数字社群的治理范式。本文从管理效能、…...

VNA操作使用学习-01 界面说明

以我手里面的liteVNA为例。也可以参考其他的nanoVNA的操作说明。我先了解一下具体的菜单意思。 今天我想做一个天调&#xff0c;居然发现我连一颗基本的50欧姆插件电阻和50欧姆的smt电阻的幅频特性都没有去测试过&#xff0c;那买来这个nva有什么用途呢&#xff0c;束之高阁求…...

mysql-DELETE、DROP 和 TRUNCATE区别

在MySQL中&#xff0c;DELETE、DROP 和 TRUNCATE 是用于不同目的的SQL命令&#xff0c;它们各自执行不同的数据库操作。以下是它们的区别和适用场景&#xff1a; DELETE 用途&#xff1a;用于从表中删除满足特定条件的行。语法示例&#xff1a;DELETE FROM table_name WHERE …...

耘想Docker版Linux NAS的安装说明

耘想LinNAS&#xff08;Linux NAS&#xff09;可以通过Docker部署&#xff0c;支持x86和arm64两种硬件架构。下面讲解LinNAS的部署过程。 1. 安装Docker CentOS系统&#xff1a;yum install docker –y Ubuntu系统&#xff1a;apt install docker.io –y 2. 下载LinNas镜像…...

OpenCV图像拼接(4)图像拼接模块的一个匹配器类cv::detail::BestOf2NearestRangeMatcher

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::BestOf2NearestRangeMatcher 是 OpenCV 库中用于图像拼接模块的一个匹配器类&#xff0c;专门用于寻找两幅图像之间的最佳特征点匹配…...

k8s 配置imagePullSecrets仓库认证

在 Kubernetes (K8s) 中&#xff0c;imagePullSecrets 允许 Pod 访问私有镜像仓库&#xff0c;例如 Docker Hub、Harbor、阿里云镜像仓库、腾讯云 TCR 或自建的 registry.flow.cn。以下是完整的 imagePullSecrets 配置步骤&#xff1a; 步骤 1&#xff1a;创建 imagePullSecret…...

不用 Tomcat?SpringBoot 项目用啥代替?

在SpringBoot框架中&#xff0c;我们使用最多的是Tomcat&#xff0c;这是SpringBoot默认的容器技术&#xff0c;而且是内嵌式的Tomcat。 同时&#xff0c;SpringBoot也支持Undertow容器&#xff0c;我们可以很方便的用Undertow替换Tomcat&#xff0c;而Undertow的性能和内存使…...

Zabbix安装(保姆级教程)

Zabbix 是一款开源的企业级监控解决方案&#xff0c;能够监控网络的多个参数以及服务器、虚拟机、应用程序、服务、数据库、网站和云的健康状况和完整性。它提供了灵活的通知机制&#xff0c;允许用户为几乎任何事件配置基于电子邮件的告警&#xff0c;从而能够快速响应服务器问…...

鸿蒙开发真机调试:无线调试和USB调试

前言 在鸿蒙开发的旅程中&#xff0c;真机调试堪称至关重要的环节&#xff0c;其意义不容小觑。虽说模拟器能够为我们提供初步的测试环境&#xff0c;方便我们在开发过程中快速预览应用的基本效果&#xff0c;但它与真机环境相比&#xff0c;仍存在诸多差异。就好比在模拟器中…...

深度学习中的“刹车”:正则化如何防止模型“超速”

深度学习中的“刹车”&#xff1a;正则化如何防止模型“超速” 大家好&#xff01;今天我们来聊聊深度学习中的一个重要概念——正则化。 什么是过拟合&#xff1f; 想象一下&#xff0c;你正在教一个孩子认字。你给他看很多猫的图片&#xff0c;他都能正确识别。但是&#…...

在C语言基础上学Java【Java】【一】

众所周知&#xff0c;Java是C风格的语言&#xff0c;对于学过C语言的人学Java可以快速适应。 废话不多说&#xff0c;直接边看代码边学。 数据类型&#xff0c;输入和输出 import java.util.Scanner;//为了使用Scanner public class a1 {//a1是类名&#xff0c;就是文件名&am…...

工厂函数详解:概念、目的与作用

一、什么是工厂函数&#xff1f; 工厂函数&#xff08;Factory Function&#xff09;是一种设计模式&#xff0c;其核心是通过一个函数来 创建并返回对象&#xff0c;而不是直接使用 new 或构造函数实例化对象。它封装了对象的创建过程&#xff0c;使代码更灵活、可维护。 二、…...

FastAPI WebSocket 无法获取真实 IP 错误记录

FastAPI WebSocket 无法获取真实 IP 错误记录 问题描述 在使用 FastAPI WebSocket 服务时&#xff0c;发现无法获取设备的真实 Remote IP&#xff0c;所有连接均显示为内网地址 10.x.x.1。以下是完整的排查过程及解决方案。 排查步骤 1. 基础信息检查 • 现象复现&#xff1…...

Android自动化测试终极指南:从单元到性能全覆盖!

在快节奏的移动开发中,应用的稳定性与用户体验直接决定成败。手动测试效率低下,自动化测试成为提升质量的核心手段。本文将手把手带你掌握Android项目中的六大测试工具,涵盖单元测试、UI测试、性能测试、端到端测试等核心场景,助你构建坚如磐石的应用! 1. 单元测试:JUni…...

Python简单爬虫实践案例

学习目标 能够知道Web开发流程 能够掌握FastAPI实现访问多个指定网页 知道通过requests模块爬取图片 知道通过requests模块爬取GDP数据 能够用pyecharts实现饼图 能够知道logging日志的使用 一、基于FastAPI之Web站点开发 1、基于FastAPI搭建Web服务器 # 导入FastAPI模…...