Linux之ARM(MX6U)裸机篇----8.主频和时钟配置实验

一,PLL时钟配置原理

二,bsp_clk代码

cpp 复制代码
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
相关推荐
Good白10191 天前
嵌入式:1.嵌入式入门|初识嵌入式、处理器、ARM与STM32
arm开发·stm32·嵌入式硬件
물の韜2 天前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
女神下凡3 天前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
女神下凡7 天前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
NamoAmitabha1287 天前
ARM Cortex-A9 核心架构(演化后的“缝合怪”)--deepseek
arm开发·zynq--ps
AllData公司负责人7 天前
AllData 可定义数据中台完成信创适配|银河麒麟 + 海光X86 CPU / 华为鲲鹏ARM CPU+ OceanBase / 人大金仓国产化环境部署落地
大数据·arm开发·数据库·人工智能·oceanbase·kingbase
a5986528 天前
ARM服务器搭建云手机靠谱吗?个人自建方案优缺点总结
服务器·arm开发·智能手机·云手机
jiecy9 天前
在 ARM 的 UOS 系统里布署 WebDav
arm开发·docker·debian
女神下凡9 天前
芯参谋(87):Linux 系统(SPI NOR)驱动开发指南
linux·运维·arm开发·驱动开发·嵌入式硬件·设计规范