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
相关推荐
乔宕一17 分钟前
arm-none-eabi-gcc 工具链自带的 libstdc++ 库会将 throw 的异常对象创建在堆上
arm开发
ShiMetaPi1 小时前
GM-3568JHF丨ARM+FPGA异构开发板应用开发教程:10 以太网测试案例
网络·arm开发·fpga开发·rk3568
『往事』&白驹过隙;2 小时前
Linux VFS虚拟文件系统杂谈
linux·c语言·arm开发·物联网·操作系统·iot
切糕师学AI1 天前
ARM标准汇编(armasm)中的“定义”(Assembler Directive)
汇编·arm开发
嵌入式×边缘AI:打怪升级日志1 天前
ARM Cortex-M 单片机启动流程与向量表深度解析(保姆级复习笔记)
arm开发·笔记·单片机
济6171 天前
ARM Linux 驱动开发篇---Linux 设备树(DTS)语法-- Ubuntu20.04
arm开发·嵌入式linux驱动开发
济6171 天前
ARM Linux 驱动开发篇---Linux 设备树简介-- Ubuntu20.04
linux·arm开发·嵌入式linux驱动开发
CHENG-JustDoIt2 天前
嵌入式开发 | ARM Cortex-M 系列中M3、M4、M23 和 M33四款处理器的深度对比分析
arm开发·单片机·嵌入式硬件·arm
invicinble2 天前
对于linux形成整体性的认识
linux·运维·arm开发
『往事』&白驹过隙;2 天前
在ARM开发中 volatile与const关键字的关键用途
c语言·arm开发·mcu·物联网·学习·iot