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。计算公式如下:
  1. CPU的频率是 400 MHZ,操作系统的滴答时钟也是 400 MHZ。

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

  1. 因为 W25Q256 Q-FLASH 最大支持 104 MHZ 的时钟,所以我们需要将 AHB3 总线进行二分频,也就是 QSPI_Handler.Init.ClockPrescaler 等于 1,所以此时 QSPI 的速率是 100 MHZ。
  1. 100 MHZ 的 QSPI 总线,他的周期是 1 / (100*10000000) = 10 ns,也就是每个上升沿的周期是 10 ns;片选 QSPI_CS_HIGH_TIME_5_CYCLE 高电平时间为5个时钟(10*5=50ns),即手册里面的 tSHSL 参数(为了确保QSPI接口在数据传输过程中有足够的时间进行片选信号的切换和稳定)
相关推荐
傍晚冰川10 分钟前
【江协科技STM32】BKP备寄存器&RTC实时时钟(学习笔记)
笔记·科技·stm32·单片机·嵌入式硬件·学习·实时音视频
亿道电子Emdoor1 小时前
【ARM】MDK-解决单机版LIC获取报错
arm开发·stm32·单片机·arm
Peter_Deng.4 小时前
单片机 - RAM 与内存、ROM 与硬盘 之间的详细对比总结
单片机·嵌入式硬件
美摄科技6 小时前
智能汽车图像及视频处理方案,支持视频智能拍摄能力
汽车·音视频·智能电视
王小小海9 小时前
【笔记分享】nRF54H20 SPI速率范围记录
笔记·单片机·嵌入式硬件·嵌入式
逆旅可好11 小时前
STM32标准库开发中断流程
stm32·单片机·嵌入式硬件
黑不拉几的小白兔13 小时前
stm32:PWM原理 及 呼吸灯实现
stm32·嵌入式硬件·fpga开发
玉阳软件yuyangdev_cn13 小时前
java版嘎嘎快充玉阳软件互联互通中电联云快充协议充电桩铁塔协议汽车单车一体充电系统源码uniapp
uni-app·汽车·中电联·充电桩协议
Amy.com14 小时前
stm32-IIC
stm32·单片机·嵌入式硬件
Peter_Deng.14 小时前
单片机 - 串行通信 & 并行通信、接口类型及常见通信协议详细解析
单片机·嵌入式硬件