莆田网站建设网,大学生做爰网站,如何用自己的域名做网站,wordpress 收不到邮件1.概念时钟(clock)#xff1a;在电子系统中是一个产生稳定、周期性振荡信号的电路或组件。这个信号像节拍器或心跳一样#xff0c;为数字电路中的各种操作提供同步时序基准。PLL#xff08;phase locked loop#xff09;锁相环电路: 倍频PFD#xff08;phase fractional P…1.概念时钟(clock)在电子系统中是一个产生稳定、周期性振荡信号的电路或组件。这个信号像节拍器或心跳一样为数字电路中的各种操作提供同步时序基准。PLLphase locked loop锁相环电路: 倍频PFDphase fractional Prescale相位分数分频器: 输出频率可升可降2.时钟配置1.CCMCCM 是 i.MX6U 时钟系统的 “大脑”通过 PLL锁相环倍频 和 Divider分频器 实现时钟信号的 “精准缩放”核心模块包括PLL 模块倍频核心接收低频时钟源如 24MHz XTAL通过倍频生成高频时钟供高性能模块使用。i.MX6U 针对不同时钟域设计了专用 PLLPLL1ARM PLLCortex-A7 CPU 的专属 PLL最高可将 24MHz 倍频至 792MHz即 CPU 最高主频 792MHz需配合电压调整。PLL2System PLL为外设域提供基础时钟输出固定 528MHz再通过分频供给 UART、SPI、GPT 等外设。PLL3USB PLL专门为 USB 模块提供 480MHz 时钟USB 2.0 高速模式需求。PLL4Audio PLL为音频模块如 I2S提供精准时钟支持灵活配置频率。Divider 模块分频调节对 PLL 输出的高频时钟进行 “降压”适配不同模块的时钟需求如 UART 常用 115200bps 波特率需 8MHz 或 16MHz 时钟。例PLL2 输出 528MHz → 经分频器÷66得到 8MHz → 供给 UART1 模块。Clock Gate时钟门控为每个模块提供独立的 “时钟开关”—— 未使用的模块可关闭时钟如 UART2 未使用时关闭其时钟是 i.MX6U 低功耗设计的关键。2.PLL模块1.PLL1kernal: CCM_ANALOG_PLL_ARMn配置步骤先选择osc_clk让step_clk为24MHz再将PLL1的输出改成step_clk让ARM暂时工作在24MHz;配置PLL为1056MHz注意设置倍频因子之前先把PLL之后的二分频设置好避免ARM内核故障最后改回pll1_main_clk示例
//ARM工作时钟配置 先分频再倍频保证ARM内核正常工作CCM-CACRR ~(7 0); //先清0CCM-CACRR | (1 0); //设置为2分频(001)CCM-CCSR ~(1 8); //设置24MHzCCM-CCSR | (1 2); //设为另外一路(step_clk)此时 锁相环短路(pll1_main_clk)(PPL_ARM) 可安全配置PPL_ARMunsigned int t CCM_ANALOG-PLL_ARM; //此时可安全配置PPL_ARMt ~(0x7F 0);t | (88 0);t | (1 13);t ~(3 14);CCM_ANALOG-PLL_ARM t;CCM-CCSR ~(1 2); //切换回PPL_ARM路2.528PLL它是 i.MX6U 芯片中负责为高速外设和关键功能模块提供稳定、高频时钟的核心锁相环PLL因输出时钟最高可配置为528MHz而得名是整个芯片时钟树中至关重要的 “高频时钟源” 之一。CCM_ANALOG_PFD_528n由手册知相关配置为故PLL2下的PFDn需要配置的MHz如图相关计算公式为故对于PFD0来说为528 * 18 / 352 27示例t CCM_ANALOG-PFD_528;t ~((0x3F 0) | (0x3F 8) | (0x3F 16) | (0x3F 24)); //先清0t | ((27 0) | (16 8) | (24 16) | (32 24));CCM_ANALOG-PFD_528 t;3.PLL3在 i.MX6U 芯片中PLL3USB PLL 是专门为 USB通用串行总线模块设计的锁相环PLL其核心作用是为 USB 控制器提供符合协议规范的高精度时钟信号相关配置如图示例如图t CCM_ANALOG-PFD_480;t ~((0x3F 0) | (0x3F 8) | (0x3F 16) | (0x3F 24)); //先清0t | ((12 0) | (16 8) | (17 16) | (19 24));CCM_ANALOG-PFD_480 t;3.时钟根配置需配置AHB_CLK_ROOT 132MHZ PERCLK_CLK_ROOT 66MHz IPG_CLK_ROOT 66MHz在 i.MX6U基于 Cortex-A7 架构的时钟树中AHB_CLK_ROOT、PERCLK_CLK_ROOT 和 IPG_CLK_ROOT 是三个核心的 “时钟根节点”它们从上层 PLL 获取时钟信号后通过分频或直接分配为不同类型的外设、总线和功能模块提供时钟。三者的定位、频率来源和服务对象有明确分工共同构成了外设时钟域的核心架构。AHBAdvanced High-performance Bus高级高性能总线是芯片内部的高速数据传输总线AHB_CLK_ROOT 是该总线的根时钟决定了高速外设和内存接口的数据传输速率。IPGInternal Peripheral Bus内部外设总线是 AHB 总线的 “子总线”主要连接中速外设IPG_CLK_ROOT 是该总线的根时钟也是多数通用外设的基础时钟源。PERCLKPeripheral Clock外设时钟是 IPG 总线的 “低速分支”PERCLK_CLK_ROOT 专为对时钟频率要求较低的外设设计是低速外设的统一时钟源。示例//AHB_clk_root配置CCM-CBCMR ~(3 18); //先清0CCM-CBCMR | (1 18); //选择 pll2的pfd2t CCM-CBCDR;t ~(1 25); //选通pll2的门t ~(7 10); //清0t | (2 10); //设为010三分频//IPG_CLK_ROOT配置t ~(3 8); //清0t | (1 8); //设为001二分频 IPG_CLK_ROOTCCM-CBCDR t;//PRECLK-CLK_ROOT配置t CCM-CSCMR1;t ~(1 6); //选通所要选择的路t ~(0x3F 0); //设为1分频 PRECLK-CLK_ROOTCCM-CSCMR1 t;3.EPIT1.工作模式EPIT 支持两种经典工作模式核心差异在于计数到 0 后的行为1. 重装载模式Reload Mode工作逻辑计数器从 LR重装载寄存器的值开始向下计数当计数到 0 时触发 “计数结束中断”自动将 LR 的值重新装载到计数器开始新一轮计数无需软件干预。核心特点中断间隔严格固定周期 LR 值 × 计数周期无累积误差适合周期性任务如 1ms 一次的系统节拍。示例若 LR1000计数周期 1μs则每 1000μs1ms触发一次中断循环往复。2. 自由运行模式Free-Run Mode工作逻辑计数器从 LR 的值开始向下计数当计数到 0 时触发 “计数结束中断”计数器停止计数保持 0 值需通过软件重新写入 LR 值才能再次启动。核心特点仅触发一次中断适合单次定时如延时 10ms 后执行某个初始化操作。示例若 LR10000计数周期 1μs则 10ms 后触发一次中断之后计数器停止。2.相关配置示例
void epit1_init(void)
{unsigned int t;t EPIT1-CR;t ~(3 24); //先清0再写1t | (1 24); //设置时钟源为外设时钟irq_clk_roott | (1 17);t ~(0xFFF 4); //清0t | (65 4); //分频66倍651后即为1MHzt | (1 3); //set-forget模式t | (1 2); //比较中断启用t | (1 1); EPIT1-CR t;EPIT1-LR 1000000;EPIT1-CMPR 0;EPIT1-CNR 1000000;//注册中断处理函数system_interrupt_register(EPIT1_IRQn, epit1_irq_handler);//GIC中断使能GIC_EnableIRQ(EPIT1_IRQn);//GIC中断优先级设置GIC_SetPriority(EPIT1_IRQn, 0);//enableEPIT1-CR | (1 0); //EPIT启用,注意最后再启用
}