PLL、Prescaler、FPD (PFD) 作用
PLL (Phase-Locked Loop,锁相环)
定义:将外部低频晶振(IMX6ULL 为 24MHz)倍频 为芯片内部所需高频时钟的核心电路。
作用:频率倍增,提供 CPU、总线、外设的高频时钟源;相位锁定,输出稳定、低抖动的时钟信号
Prescaler (预分频器)
定义:时钟树中的频率 "减速器"。
作用:对高频时钟进行整数分频(输出 = 输入 / N),将高频时钟降至外设可接受的频率(如 66MHz→1MHz)。
特点:IMX6ULL 定时器(EPIT/GPT)内置12 位预分频器,分频范围广(1~4096)。
PFD (Phase Fractional Divider,相位分数分频器)
能分频也能倍频
IMX6ULL PLL 与 PFD 数量
PLL 总数:7 个
PLL1 (ARM_PLL):CPU 内核时钟,最高 1.3GHz
PLL2 (528_PLL):系统总线时钟,固定 528MHz
PLL3 (USB1_PLL):USB PHY 时钟,固定 480MHz
PLL4 (Audio_PLL):音频时钟
PLL5 (Video_PLL):视频时钟
PLL6 (ENET_PLL):以太网时钟,500MHz
PLL7 (USB2_PLL):第二个 USB PHY 时钟
PFD 总数:8 个PLL2 分出 4 路 PFD:PLL2_PFD0 ~ PLL2_PFD3
PLL3 分出 4 路 PFD:PLL3_PFD0 ~ PLL3_PFD3
简述ARM PLL的配置流程
cpp
一 kernal: CCM_ANALOG_PLL_ARMn
1 先选择osc_clk,让step_clk为24MHz
2 再将PLL1的输出改成step_clk,让ARM暂时工作在24MHz;
3 配置PLL为1056,注意设置倍频因子之前先把PLL之后的二分频设置好,避免ARM内核故障!!
4 最后改回pll1_main_clk
二 528 PLL:CCM_ANALOG_PFD_528n
三 480 PLL:CCM_ANALOG_PFD_480n
四 AHB_CLK_ROOT(132M)
1 CBCMR[PRE_PERIPH_CLK_SEL]
2 CBCDR[PERIPH_CLK_SEL]
3 CBCDR[AHB_PODF]
五 IPG_CLK_ROOT(66M)
CBCDR[IPG_PODF]
六 PERCLK_CLK_ROOT(66M)
1 CSCMR1[PERCLK_CLK_SEL]
2 CSCMR1[PERCLK_PODF]
IMX6ULL中的EPIT和GPT的工作原理是什么?
EPIT工作原理:
增强型周期中断定时器,是一个32为向下计数器,有三个寄存器,分别是计数寄存器、加载寄存器、比较寄存器,通过向加载寄存器写入初值,自动写入计数寄存器,然后向下计数,会与比较寄存器中的值进行比较,如果比比较寄存器的值小,就会触发中断,当计数寄存器减为0后,会再次加载初值重新向下计数。
GPT工作原理:
通用目的的定时器,是一个32尾向上定时器,有两路输入捕获和3路输出比较中断,当工作在自由运行模式时,当计数到OxFFFFFFFF时,会重新回滚到Ox00000000继续向上计数,就可以实现高精度延时,通过读取CNT寄存器,记录当前的计数值,然后通过死循环比较判断到对应的延时是否到达,即可完成高精度阻塞式延时。