【ARM嵌入式学习笔记Day6】一文打通i.MX6ULL时钟体系:PLL/PFD/预分频+滞回比较器全解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

今天是ARM嵌入式学习的第六天,我们把重心从外设转向了芯片最底层的"动力心脏"------时钟系统。完整拆解了i.MX6ULL的CCM(时钟控制模块),从外部24MHz晶振输入,到PLL锁相环倍频、PFD分数分频、总线预分频,再到每个外设的时钟门控,走通了时钟分发的完整链路。同时还补充了GPIO前端的滞回比较器(施密特触发器)原理,搞懂了硬件电平防抖的底层逻辑。

本文按「基础概念→整体架构→配置流程→外设对比→硬件前端」的结构梳理所有知识点,结合架构图和硬件原理,把时钟这个嵌入式最核心也最容易懵的知识点讲透。


一、时钟系统四大核心组件

整个时钟系统本质就是「倍频→细分→降频→开关」的四级结构,对应四个核心部件,也是我们配置时钟的基本操作单元。

1. PLL(Phase Locked Loop,锁相环)

  • 本质:基于闭环反馈的高频倍频电路,是整个芯片的时钟"发动机"
  • 核心作用:将外部低频晶振(i.MX6ULL默认24MHz)倍频到数百MHz的高频时钟,为内核、总线、外设提供稳定的高频时钟源
  • 工作逻辑:输入低频参考时钟,通过内部相位比较器、环路滤波器、压控振荡器形成闭环,输出频率稳定的高频时钟,输出频率 = 输入频率 × 倍频系数
  • 特点:输出频率稳定度和参考晶振完全一致,可实现几十倍的倍频

2. PFD(Phase Fractional Divider,相位分数分频器)

  • 本质:集成在PLL后端的精细分频单元,基于相位插值技术实现分数级分频
  • 核心作用:在不修改PLL倍频系数的前提下,对PLL主时钟进行小范围、高精度分频,一路PLL可以输出多路不同频率的时钟,减少独立PLL的数量
  • 特点:分频精度高、切换速度快,是高频时钟二次分发的核心单元

3. Prescaler(预分频器)

  • 本质:串接在总线与外设之间的可编程分频电路
  • 核心作用:对总线高频时钟做整数降频,得到不同外设、计数器所需的工作频率
  • 分频规则 :通常为「写入值+1」的分频逻辑,不同位宽支持不同分频范围:
    • 2bit分频器:支持1~4分频
    • 3bit分频器:支持1~8分频
    • 6bit分频器:支持1~64分频
    • 定时器专用12bit预分频:支持1~4096分频

4. CG(Clock Gating,时钟门)

  • 本质:每个外设独立的时钟开关
  • 核心作用:控制单个外设的时钟供给,不需要工作时关闭时钟,降低芯片功耗
  • 特点:是嵌入式低功耗开发的核心控制单元,每个外设都有独立的时钟门控位

二、i.MX6ULL时钟树整体架构

i.MX6ULL的时钟系统以外部24MHz晶振为唯一参考源,经过7个PLL倍频、PFD细分、多路选择器切换、总线分频、外设门控,最终分发到所有内核和外设。

1. 7个PLL锁相环总览

整个芯片共有7个独立PLL,分别负责不同的功能域,其中PLL2和PLL3集成了PFD单元,是外设时钟的主要来源:

PLL编号 名称 输出特性 核心用途 内置PFD数量
PLL1 ARM PLL 最高1056MHz可配置 为Cortex-A7内核提供工作主频 无
PLL2 System PLL(528 PLL) 固定528MHz 系统总线、AHB/IPG外设时钟的主来源 4路PFD
PLL3 USB1 PLL(480 PLL) 固定480MHz USB、SDIO等外设时钟源 4路PFD
PLL4 Audio PLL 频率可调 音频编解码器精准时钟 无
PLL5 Video PLL 频率可调 LCD显示控制器像素时钟 无
PLL6 Ethernet PLL 频率可调 以太网MAC控制器时钟 无
PLL7 USB2 PLL 固定480MHz 仅用于USB OTG测试,内部与PLL3连通 无

注:日常开发中PLL7很少用到,因此常说i.MX6ULL有6个主PLL。

2. PLL2与PLL3的PFD输出

PLL2(528MHz)和PLL3(480MHz)各集成4路独立PFD,是外设时钟的主要分支:

  • PLL2的4路PFD输出:PFD0=352MHz、PFD1=594MHz、PFD2=400MHz、PFD3=297MHz
  • PLL3的4路PFD输出:PFD0=720MHz、PFD1=540MHz、PFD2=508.0MHz、PFD3=454.7MHz

3. 时钟分发全链路

从PLL输出到外设正常工作,时钟要经过五级分发:

  1. PLL主输出:24M晶振经过PLL倍频,得到高频主时钟
  2. PFD细分:通过PFD对主时钟做分数分频,得到不同频率的分支时钟
  3. 多路选择器(MUX):选择某一路PFD或PLL输出,作为总线的时钟源
  4. 总线预分频:经过3bit/6bit预分频器,得到AHB总线、IPG外设总线的标准时钟
  5. 外设时钟门(CG):每个外设独立的时钟开关,打开后外设才能正常工作

以我们之前定时器用的IPG外设总线时钟(66MHz)为例,完整路径为: 24M晶振 → PLL2倍频到528M → 多路选择器选择PLL2主时钟 → 8分频 → IPG总线66MHz → 外设时钟门 → GPIO/UART/定时器等外设


三、ARM PLL的标准配置流程

给ARM内核配置PLL是时钟初始化的核心步骤,必须遵循「先低速运行、配置PLL、等待锁定、再切换高频」的流程,防止配置过程中系统崩溃。

步骤1:切换内核到临时低速时钟

配置CCM的CCSR寄存器,将ARM内核的时钟源先切换到外部24MHz晶振(step_clk),保证配置PLL的过程中系统可以正常运行。

步骤2:配置PLL倍频参数

写入PLL1的控制寄存器,设置参考时钟选择、倍频系数、分频系数,通过公式计算得到目标内核频率: 输出频率 = 24MHz × 倍频系数 / 分频系数

步骤3:使能PLL并等待锁定

置位PLL的使能位,启动锁相环;随后循环查询PLL的LOCK锁定标志位,直到硬件自动置位,表示PLL输出频率稳定、相位已锁定。

步骤4:切换内核时钟到PLL

时钟稳定后,配置CACRR寄存器的时钟选择位,将ARM内核的时钟源从低速晶振切换到PLL1输出的高频时钟。

步骤5:配置后端总线分频器

配置AHB预分频器、IPG预分频器等,将内核时钟分频得到系统总线、外设总线的工作频率,完成整个时钟树的初始化。


四、两大定时器核心原理对比

结合今天的时钟系统,我们也对比了i.MX6ULL里两个最常用的定时器:EPIT和GPT。它们都挂载在IPG外设总线上,使用66MHz外设时钟,但定位和工作逻辑完全不同。

特性 EPIT(增强型周期中断定时器) GPT(通用定时器)
计数方向 32位向下递减计数 32位向上递增计数
核心定位 专为周期性定时中断设计 多功能通用定时器
计数模式 自由运行模式 / 自动重载模式 重启模式 / 自由运行模式
核心功能 周期比较中断、单路引脚输出 自由计时、2路输入捕获、3路输出比较
典型场景 固定周期任务调度、定时采样 精准延时、脉冲宽度测量、PWM输出
时钟来源 支持多路时钟源选择 支持5种时钟源选择

五、硬件输入前端:滞回比较器(施密特触发器)

除了时钟系统,今天还补充了GPIO引脚输入前端的硬件电路------滞回比较器,这是按键、外部输入能稳定工作的硬件基础。

1. 为什么需要滞回比较器?

外部输入的电平(比如按键按下的电平)会带有毛刺、抖动和噪声,如果直接接到数字电路,会导致频繁误触发。滞回比较器通过设置上下两个不同的触发阈值,实现电平的整形和防抖。

2. 工作原理

滞回比较器引入正反馈,形成两个触发阈值:

  • 上触发点(上门限):输入电平上升到这个值,输出才会翻转
  • 下触发点(下门限):输入电平下降到这个值,输出才会翻转

以典型的5V供电、三个等值电阻的电路为例:

  • 输出高电平时,上门限电压 = 3.3V,输入超过3.3V输出才会翻转为低
  • 输出低电平时,下门限电压 = 1.6V,输入低于1.6V输出才会翻转为高

两个阈值之间的差值叫滞回电压,正是这个电压差过滤掉了输入信号上的毛刺和抖动,保证输出电平的稳定。

3. 在芯片中的应用

i.MX6ULL的GPIO引脚内部就集成了施密特触发器,可以通过IOMUXC的PAD寄存器配置开启。开启后可以有效提升输入信号的抗干扰能力,这也是我们之前按键配置里0xF0B0参数的核心功能之一。


六、学习总结

今天第六天的学习,我们从芯片的"心脏"------时钟系统入手,彻底打通了从外部晶振到外设工作的完整时钟链路:

  1. 理解了PLL、PFD、预分频器、时钟门四个核心组件的作用和区别
  2. 掌握了i.MX6ULL 7个PLL的分布和时钟树的分发逻辑
  3. 学会了ARM PLL的标准配置流程和注意事项
  4. 对比了EPIT和GPT两大定时器的原理和适用场景
  5. 搞懂了滞回比较器的硬件防抖原理
相关推荐
雨田言炎2 小时前
STM32之RCC系统时钟控制(芯片的心脏控制器)
stm32·单片机·嵌入式硬件
李永奉2 小时前
日常使用的锂电池上,新、旧锂电池的差异分析
单片机·嵌入式硬件·物联网·智能手机·电脑
Go Work2 小时前
2026 Cadence SPB 24.1中文版安装图文详解(附安装包)
经验分享·笔记
ACP广源盛139246256732 小时前
HDMI2.0 转 DP1.4 桥接方案评估:国产 GSV2125C@ACP 芯片选型笔记
笔记·硬件架构·hdmi·type-c·国产芯片
额额额对了2 小时前
IMX6ULL 杂项设备 LED 驱动
stm32·单片机·嵌入式硬件
龙仔7253 小时前
RustDesk 自建服务器 Key 强校验配置笔记
运维·服务器·笔记
悟乙己3 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:赛题解析(一)
笔记·学习·金融
szxinmai主板定制专家3 小时前
基于RK3588+FPGA+AI的储能电站边缘网关,实现电力数据采集与智能预警
arm开发·人工智能·fpga开发·rk3576·半导体设备
PC2005-cloud4 小时前
MySQL学习笔记:GTID 主从复制,从原理到实践,告别传统 Binlog+Position 的痛点
笔记·学习·mysql