欢迎光临散文网 会员登陆 & 注册

(8)IMX6ULL主时钟配置一般方法论

2023-03-25 13:54 作者:豆豆满江红  | 我要投稿

时钟配置

时钟配置需要看三个方面【时钟源选择】【时钟路径选择】【时钟目标选择】

(1)看时钟树,找想配置的【时钟目标】

        选择想要配置的是时钟,了解其【时钟源】【时钟路径】I.MX6U 参考手册 P 628

(2)找到了之后,明确时钟源和时钟路径。通过公式选择好想用时钟源和时钟路径。

(3)配置时钟源

        时钟源又分为两种:【PLL自身的主时钟源的配置】【PLL经过开关切换的选择配置】

        【PLL自身的主时钟源的配置】:主要是在“CCM Analog Memory”P 710处看

        【PLL经过开关切换的选择配置】:主要在“CCM internal clock generation”章节,看Switcher clock generation(切换时钟生成图)

        看图找到寄存器的对应位,在进行配置。

例如:我们想配置芯片的主时钟。

(1)找想配置的【时钟目标】

找到了ARM时钟,【时钟源】为PLL1,路径可分频,与CACRR寄存器相关。

(2)找到了之后,明确时钟源和时钟路径。通过公式选择好想用时钟源和时钟路径。

我们想让主时钟以528M的频率工作 我们可以选择 PLL1输出1056M,再在路径上分频,最后输出1056/2=528M。

(3)配置时钟源

    然后我们看PLL1时钟源的配置。

    【PLL自身的主时钟源的配置】:

通过在该章节寻找。找到了这个
此寄存器配置如图

得到了一个公式:Fout = Fin * div /2。

这里我们需要的是1056M,Fin=24M(板载晶振写着24M),那么通过计算我们得到DIV_SELECT=1056/12=88

所以我们此参数配置为88,enable设为1。

【PLL经过开关切换的选择配置】:我们在想要改变PLL1的输出的过程中,我们需要先将系统的所需要的时钟进行切换。总结为:先让系统用别的时钟,再配置需要的时钟,再切换回需要的时钟。

这时我们就需要看PLL的其他路径,如图:


图中可以看出,PLL1的输出与CCSR寄存器有关。①处的数据选择器,选择了用PLL1主时钟or step_clk。②处选择了用OSC(也就是板载24M晶振)还是PFD时钟。③处选择了具体用哪个时钟。

我们的目的是:将PLL1(996M)改为1056M,我们可以

CCSR: pll1_sw_clk_sel = 0;

CCSR: step_sel = 0;

这样我们选择了 24M以供系统正常运行。

再配置CCM_ANALOG_PLL_ARMn寄存器,改变PLL1:

CCM_ANALOG_PLL_ARMn:ENABLE = 1;

CCM_ANALOG_PLL_ARMn:DIV_SELECT = 88;

最后切换回PLL1:

CCSR: pll1_sw_clk_sel = 1;

此时就用到了1056M的时钟。接下来配置二分频:

此图可以看出与CACRR寄存器相关,那我们找CACRR寄存器

他的信息如下,我们只要让后三位 = 001即可二分频。

至此,主时钟的配置完成,输出为1056/2 = 528M。

(8)IMX6ULL主时钟配置一般方法论的评论 (共 条)

分享到微博请遵守国家法律