I.MX6U 主频修改

首先看下系统时钟来源,其中共两个晶振,一个是32.768KHz 供RTC时钟使用,另一个时24MHz 供系统和外设使用。如下图所示:

在这里插入图片描述
从参考手册18章找到时钟树(部分):
在这里插入图片描述
第一行由PLL1 时钟提供经过 分频/倍频,输出到ARM 作为系统时钟。
在这里插入图片描述
修改系统时钟可分为以上3步:
第一步:确定PLL1时钟,此时我们先假设PLL1的时钟为996MHz。
第二步:修改CCM_CACRR[ARM_PODF] 寄存器的这个位对其进行分频,该位支持1~8分频。
在这里插入图片描述
第三步:可忽略,此处没有进行分频!!

总结:经过三步分析,主要在第一步和第二步,如果我们要得到528MHz的时钟频率,那么PLL1可设置为1056MHz,然后利用第二步进行2分频得到。
(注意:PLL1最高支持到1.3GHz)
在这里插入图片描述
第二步已经搞清楚,重点看下第一步,PLL1的时钟怎么得来的,俗话说万物皆有根源,所以说不可能凭空出现的,那我们继续追溯吧。

从芯片手册中找到Clock Switcher,里面一张图描述了PLL1的时钟选择,下图所示:

在这里插入图片描述
我们从右向左看,最右侧 pll1_sw_clk 是PLL1 时钟最终输出的频率,GLITCHLESS MUX 是一个选择器,通过CCSR[ pll1_sw_clk_sel] 寄存器控制,选择 pll1_main_clk 还是 选择step_clk,运行时我们选择pll1_main_clk,但是在进行频率调整的时候,需要将时钟切换到step_clk上,等待pll1_main_clk时钟调整完成之后,再切换到pll1_main_clk。
从step_clk往左看,也是一个选择器,选择step_clk的时钟源,一般选择osc_clk 即可,也就是24MHz的晶振频率,通过CCM_CCSR[setp_sel] 寄存器操作。在这里插入图片描述
那我们如何修改系统时钟呢?看这里
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
其中13bit 控制PLL的使能位,所以改为要Enable,再一个设[DIV_SELECT]
bit,里面有个公式:

 Fout = Fin * div_select/2.0.

Fout:PLL1要设置的时钟大小 (我们要设置为528*2=1056MHz)
Fin:外部晶振大小 (24MHz)
所以,div_select = 88

整体总结:
①、设置寄存器 CCSR [STEP_SEL] 位,选择 step_clk 的时钟源为 24MHz 的晶振。
②、设置寄存器 CCSR [ PLL1_SW_CLK_SEL] 位,设置 pll1_sw_clk 的时钟源为step_clk为24MHz,这是为了让芯片能够暂时工作,用于更改时钟频率。此时可将主频先改为 24MHz。
③、设置寄存器 CCM_ANALOG_PLL_ARMn,将 pll1_main_clk(PLL1)设置为 1056MHz,并且使能13bit。
④、设置寄存器 CCSR [PLL1_SW_CLK_SEL] 位,重新将 pll1_sw_clk 的时钟源切换回
pll1_main_clk,切换回来以后的 pll1_sw_clk 就等于 1056MHz。
⑤、最后设置寄存器 CCM_CACRR [ARM_PODF] 为 2 分频,此时内核主频就为 528MHz。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值