Linux嵌入式开发 -- imx6ull 主频配置

imx6ull主频设置


前言

  对于imx6ull系列芯片而言,默认工作频率为396MHZ,但标准工作频率为528MHZ,甚至可以达到696MHZ,本章主要介绍如何将工作频率设置到528MHZ。


一、系统时钟来源

  打开开发板原理图:
    --第一张图为32.768KHz的晶振,为imx6ull的RTC时钟源;
    --第二张图为24MHz的晶振,其作为imx6ull内核以及其他外设的时钟源。
32.768KHz

在这里插入图片描述

二、7路PLL时钟源

1. 介绍

  针对不同外设,时钟源也不尽相同。imx6ull共7组PLL,该7组PLL来源于24MHz的晶振。
  其中,部分PLL还会延申4路PFD,也是用于外设,此部分后边用到时再讨论。
在这里插入图片描述
  而PLL时钟源经过多路选择器以及分频器实现提供相应外设的工作频率,如下图:
在这里插入图片描述

2. 主频设置

主频,即对ARM PLL进行设置:
  ①图2为设置主频的原理图,由图可知,若PLL1为996MHz,则经过2分频,得到的主频频率为498MHz,而我们所需的主频为528MHz,故需将PLL1设置为528 * 2 = 1056MHz,设置位于CCM_ANALOG_PLL_ARM寄存器的[DIV_SELECT];
  ②DIV_SELECT有计算公式:PLL output = Fref * DIV_SEL / 2 ,所以DIV_SEL结果为88;
              - - PLL output为pll1时钟频率1056MHz,Fref为时钟源晶振24MHz。
  ③图1为PLL1产生源,此需通过多路选择器选择PLL1 Clk,才能将时钟信号传给图2所示路径,多路选择器开关位于CCSR寄存器中,此时选择时钟源需为pll1_main_clk。
  需要注意的是,当我们对pll1_main_clk进行设定时,我们需保证arm的正常运行,即内核的正常工作,故需先将其切换为step_clk,等待设置完成后,再将其切换为pll1_main_clk。
在这里插入图片描述
      图1 – PLL1时钟选择(章节18的18.5.1.5.1中)

在这里插入图片描述
      图2 – ARM PLL

3. 代码编写

void imx6ull_init(void)
{
    /* 对pll1_main_clk编辑之前,先将主频时钟源切换至step_clk */
    if(CCM->CCSR & (1 << 2) == 0)
    {
        CCM->CCSR &= ~(1 << 2);
        CCM->CCSR |= (1 << 2);
    }

    CCM_ANALOG->PLL_ARM &= ~(0x7F << 0)		/* DIV_SELECT相关位清零 */
    CCM_ANALOG->PLL_ARM |= ((1 << 13) | (88 & 0x7F));   /* 1左移13位为了使能时钟 , 88 = DIV_SEL */

    CCM->CCSR &= ~(1 << 2);		/* 重新切换至pll1_main_clk */

    CCM->CACRR |= (1 << 0);		/* 2分频 */
}

总结

  ①主频为ARM的工作频率,事关整个内核的运行。故在对其进行主频设定的时候,需将主频时钟切换为24MHz晶振(step_clk)确认内核正常工作,当设置完成后,再重新切回(pll1_main_clk)。
  ②PLL:Phase Locked Loop -> 锁相环,一般的晶振由于工艺和成本,很难做出较高的频率,所以通过PLL可实现输出稳定高频的时钟信号。
  ③PFD:鉴频鉴相器。比较两个输入信号的频率和相位即可得到与相位差有关的输出。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值