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

news2025/3/25 11:25:23

时钟源:

时钟源为系统时钟提供原始频率信号,系统时钟则通过(分频、倍频、选择器)成为整个芯片的“主时钟”,驱动 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接口在数据传输过程中有足够的时间进行片选信号的切换和稳定)

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

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

相关文章

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

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

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

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

函数:形参和实参

在函数的使用过程中分为实参和形参,实参是主函数实际调用的值而形参则是给实参调用的值,如果函数没被调用则函式不会向内存申请空间,先用一段代码演示 形参: 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及以上版本,支…

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

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

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

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

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

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

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

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

耘想Docker版Linux NAS的安装说明

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

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

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

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

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

Zabbix安装(保姆级教程)

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

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

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

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

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

Python简单爬虫实践案例

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

基于springboot的房产销售系统(016)

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不断成熟,带动了房产销售系统,它彻底改变了过去传统的…

云盘搭建笔记

报错问题: No input file specified. 伪静态 location / {if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last;break;} } location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last; break; } } 设…

《从深海到卫浴:Relax Max如何用军工科技重塑生活仪式》​

《从深海到卫浴:Relax Max如何用军工科技重塑生活仪式》​ 当瑞士联邦理工学院的一纸专利授权书揭开帷幕,卫浴行业终于意识到:Relax Max的「军工科技民用化」绝非营销噱头。这支由前潜艇工程师和航天材料学家组成的团队,将核潜艇…

【vulhub/wordpress靶场】------获取webshell

1.进入靶场环境: 输入:cd / vulhub / wordpress / pwnscriptum 修改版本号: vim docker-compose.yml version: 3 保存退出 开启靶场环境: docker - compose up - d 开启成功,docker ps查看端口 靶场环境80…

人工智能助力家庭机器人:从清洁到陪伴的智能转型

引言:家庭机器人进入智能时代 过去,家庭机器人只是简单的“工具”,主要用于扫地、拖地、擦窗等单一任务。然而,随着人工智能(AI)技术的迅猛发展,家庭机器人正经历从“机械助手”向“智能管家”甚…