1.硬件原理图
1.32.768Khz的晶振,供给RTC使用
2.在6U中T16与T17IO口中接了一个24MHz的晶振
2.I.MX系统时钟分析
1.7路PLL
为了方便升成时钟,从24MHz晶振中声称7路PLL,每一路又升成PFD_PLL。
配置详见时钟树。还要学会看RM手册进行配置频率,具体看下面。
2.配置主频
我们想要配置内核主频528MHz。
我们的目标是配置ARM内核主频,首先第一步就是配置CLOCK SWITCHER的PLL1,之后进行CACRR寄存器的配置的分频配置。
首先使用的是24M的OSC外部IO晶振,想要配置到pll1_sw_clk有两种方式,一种走,配置pll1_main_clk或者step_clk模式。但是我们第一次不能配置pll1_main_clk,因为需要配置PLL1才可以,所以我们先走osc_clk的路线,再恢复到pll1_main_clk的路线,他们都是CACRR寄存器中的模式。详见Reference manual手册。其种step_clk模式还要搭配osc_clk模式。
PLL output frequency = Fref * DIV_SEL/2(DIV_SEL在54-108区间)其中Fref=24M , 若想输出528MHz,且从手册得知PLL1介于650M-1.4GHz需要配置输出频率为1056MHz,然后进行二分频得到。故DIV_SEL=88。
最后不要忘记切换回pll1_main_clk的模式。
3.示例代码
bsp_clk.c
void imx6ull_clkinit(void)
{
/*Init pll_main_clk is 528MHz*/
/*SWITCHER */
if(( (CCM->CCSR >> 2) & 0x1) == 0)/*Currently register bit 2 is pll1_main_clk*/
{
/*Setup STEP_SEL is osc_clk mode 24MHz*/
CCM->CCSR &= ~(1<<8) ;
CCM->CCSR |= (