一,PLL时钟配置原理
二,bsp_clk代码
bsp_clk.c:
#include "bsp_clk.h"
/*
* @description : 使能I.MX6U所有外设时钟
* @param : 无
* @return : 无
*/
void clk_enable(void)
{
CCM->CCGR0 = 0XFFFFFFFF;
CCM->CCGR1 = 0XFFFFFFFF;
CCM->CCGR2 = 0XFFFFFFFF;
CCM->CCGR3 = 0XFFFFFFFF;
CCM->CCGR4 = 0XFFFFFFFF;
CCM->CCGR5 = 0XFFFFFFFF;
CCM->CCGR6 = 0XFFFFFFFF;
}
/* 初始化时钟 */
void imx6u_clkinit(void)
{
/* 初始化6U的主频为528MHz */
if(((CCM->CCSR >> 2) & 0X1) == 0) /* 当时时钟使用pll1_main_clk,也就是pll1 */
{
CCM->CCSR &= ~(1 << 8); /* 设置step_clk = osc_clk=24M */
CCM->CCSR |= (1 << 2); /* pll1_sw_clk=step_clk=24MHz */
}
/* 设置PLL1=1056MHz */
CCM_ANALOG->PLL_ARM = (1 << 13) | ((58 << 0) & 0x7f);
CCM->CACRR = 0;/* 设置2分频 */
CCM->CCSR &= ~(1 << 2);/* 设置pll1_sw_clk=pll1_main_clk=1056MHz */
}
bsp_clk.h:
#ifndef __BSP_CLK_H
#define __BSP_CLK_H
#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "MCIMX6Y2.h"
void clk_enable(void);
void imx6u_clkinit(void);
#endif