嵌入式Linux裸机开发(四)IMX6U主频和时钟配置

news2024/12/23 14:15:18

系列文章目录


文章目录

  • 系列文章目录
  • 介绍
  • 时钟来源
    • PLL时钟源
      • 内核时钟
      • PFD时钟
      • AHB、 IPG 和 PERCLK 根时钟设置
  • 结语


介绍

默认配置下 I.MX6U 工作频率为 396MHz,但该系列标准工作频率事528MHz,有些型号甚至可以工作到696MHz。

默认情况下内部 boot rom 会将 I.MX6U 的主频设置为 396MHz,下面介绍如何配置为528MHz

详细内容在参考手册的第十章和第十八章:

在这里插入图片描述
在这里插入图片描述

时钟来源

I.MX6U-ALPHA 开发板的系统时钟来源于两部分: 32.768KHz 和24MHz 的晶振
32.768KHz 晶振是 I.MX6U 的 RTC 时钟源, 24MHz 晶振是 I.MX6U 内核和其它外设的时钟源(和STM32很像)
在这里插入图片描述

PLL时钟源

外设时钟源分为7组,都是通过24MHz晶振的PLL得来的

在这里插入图片描述
这么复杂,黄色标注的都是寄存器,也就是需要配置的

内核时钟

在这里插入图片描述
箭头所指的此处没有进行 2 分频

配置:
PLL1 可以设置为1056MHz,寄存器 CCM_CACRR 的 ARM_PODF 位设置为 2 分频,内核主频为 528MHz。
PLL1 就可以设置为 696MHz, CCM_CACRR 的 ARM_PODF 设置为 1 分频,主频设为 696MHz。

PLL1 的频率可以通过寄存器 CCM_ANALOG_PLL_ARMn 来设置:

CCM_CACRR 的 ARM_PODF:
在这里插入图片描述
CCM_ANALOG_PLL_ARMn :
在这里插入图片描述
DIV_SELECT: 此位设置 PLL1 的输出频率,可设置范围为: 54~108, PLL1 CLK = Fin *div_seclec/2.0, Fin=24MHz。如果 PLL1 要输出 1056MHz 的话, div_select 就要设置为 88。

但是在修改PLL1时钟频率的时候,需要将内核时钟切换到其他的时钟源:
在这里插入图片描述
用到的寄存器寄存器 CCM_CCSR,切换到 osc_clk,也就是 24MHz 的晶振

	/* 1、设置ARM内核时钟为792MHz */
	/* 1.1、判断当前ARM内核是使用的那个时钟源启动的,正常情况下ARM内核是由pll1_sw_clk驱动的,而
	 *      pll1_sw_clk有两个来源:pll1_main_clk和tep_clk。
	 *      如果我们要让ARM内核跑到792M的话那必须选择pll1_main_clk作为pll1的时钟源。
	 *      如果我们要修改pll1_main_clk时钟的话就必须先将pll1_sw_clk从pll1_main_clk切换到step_clk,
	 *		当修改完pll1_main_clk以后在将pll1_sw_clk切换回pll1_main_clk。而step_clk的时钟源可以选择
	 * 		板子上的24MHz晶振。
	 */
	
	if((((CCM->CCSR) >> 2) & 0x1 ) == 0) 	/* 当前pll1_sw_clk使用的pll1_main_clk*/
	{	
		CCM->CCSR &= ~(1 << 8);				/* 配置step_clk时钟源为24MH OSC */	
		CCM->CCSR |= (1 << 2);				/* 配置pll1_sw_clk时钟源为step_clk */
	}

	/* 1.2、设置pll1_main_clk为792MHz
	 *      因为pll1_sw_clk进ARM内核的时候会被二分频!
	 *      配置CCM_ANLOG->PLL_ARM寄存器
	 *      bit13: 1 使能时钟输出
	 *      bit[6:0]: 66, 由公式:Fout = Fin * div_select / 2.0,792=24*div_select/2.0,
	 *              		得出:div_select=    66 
	 */
	CCM_ANALOG->PLL_ARM = (1 << 13) | ((66 << 0) & 0X7F); 	/* 配置pll1_main_clk=792MHz */
	CCM->CCSR &= ~(1 << 2);									/* 将pll_sw_clk时钟重新切换回pll1_main_clk */
	CCM->CACRR = 0;											/* ARM内核时钟为pll1_sw_clk/1=792/1=792Mhz */

PFD时钟

PLL2、 PLL3 和 PLL7 固定为 528MHz、 480MHz 和 480MHz, PLL4~PLL6 都是针对特殊外设的,用到的时候再设置。
在这里插入图片描述
以PLL2为例子,寄存器是 CCM_ANALOG_PFD_528n:
在这里插入图片描述
分为四组,分别对应PFD0~PFD3,每组 8 个 bit
每组对应的寄存器为:
PFD0_FRAC: PLL2_PFD0 的分频数, PLL2_PFD0 的计算公式为 52818/PFD0_FRAC,可设置的范围为 12~35 。 如 果 PLL2_PFD0 的 频 率 要 设 置 为 352MHz 的话,PFD0_FRAC=52818/352=27。
PFD0_STABLE: 此位为只读位,可以通过读取此位判断 PLL2_PFD0 是否稳定。
PFD0_CLKGATE: 为 1 的时候关闭 PLL2_PFD0 的输出,为 0 的时候使能输出。

其余同理

AHB、 IPG 和 PERCLK 根时钟设置

7 路 PLL 和 8 路 PFD 设置完成以后最后还需要设置 AHB_CLK_ROOT 和 IPG_CLK_ROOT的时钟

在这里插入图片描述

我们就将 AHB_CLK_ROOT、IPG_CLK_ROOT 和 PERCLK_CLK_ROOT 分 别 设 置 为 132MHz 、 66MHz 、 66MHz
在这里插入图片描述
这些东西全在参考手册里面:
在这里插入图片描述

结语

暂时先这样,先不深入学习了,内容太多了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云服务器ECS经济型e实例租用价格表

阿里云服务器e系列优惠价格&#xff1a;2核2G配置182元一年、2核4G配置365元一年、2核8G配置522元一年&#xff0c;e系列即ECS经济型e实例&#xff0c;CPU采用Intel Xeon Platinum可扩展处理器&#xff0c;系统盘支持ESSD Entry云盘&#xff08;推荐&#xff09;、ESSD云盘、ES…

【SpringBoot】| Thymeleaf 模板引擎

目录 Thymeleaf 模板引擎 1. 第一个例子 2. 表达式 ①标准变量表达式 ②选择变量表达式&#xff08;星号变量表达式&#xff09; ③链接表达式&#xff08;URL表达式&#xff09; 3. Thymeleaf的属性 ①th:action ②th:method ③th:href ④th:src ⑤th:text ⑥th:…

【yolo系列:yolov7改进wise-iou】

yolo系列文章目录 学习视频&#xff1a; YOLOV7改进-Wise IoU_哔哩哔哩_bilibili 代码地址&#xff1a; objectdetection_script/yolov7-iou.py at master z1069614715/objectdetection_script (github.com) 文章目录 yolo系列文章目录一、在yolov7之上进行替换二、在loss.p…

双馈风力发电机-900V直流混合储能并网系统Simulink仿真

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

C++默认参数(实参)

在本文中&#xff0c;您将学习什么是默认参数&#xff0c;如何使用它们以及使用它的必要声明。在C 编程中&#xff0c;您可以提供函数参数的默认值。默认参数背后的想法很简单。如果通过传递参数调用函数&#xff0c;则这些参数将由函数使用。但是&#xff0c;如果在调用函数时…

几道web题目

总结几道国庆写的web题目 [ACTF2020 新生赛]Include1 点进去发现就一个flag.php,源代码和抓包都没拿到好东西 结合题目猜是文件包含&#xff0c;构建payload ?filephp://filter/readconvert.base64-encode/resourceflag.php 得到base64编码过的flag&#xff0c;解码即可 此题…

榜单发布!AR-HUD进入LCoS时代,哪些企业正在领跑

高工智能汽车研究院监测数据显示&#xff0c;今年1-7月中国市场&#xff08;不含进出口&#xff09;乘用车前装标配W/AR HUD交付108.35万辆&#xff0c;同比增长47.98%&#xff0c;前装搭载率升至9.82%。 其中&#xff0c;从价位区间分布来看&#xff0c;30万元及以上车型标配W…

【Overload游戏引擎分析】画场景栅格的Shader分析

Overload引擎地址&#xff1a; GitHub - adriengivry/Overload: 3D Game engine with editor 一、栅格绘制基本原理 Overload Editor启动之后&#xff0c;场景视图中有栅格线&#xff0c;这个在很多软件中都有。刚开始我猜测它应该是通过绘制线实现的。阅读代码发现&#xff0…

2023年,有哪些好用的互联网项目管理软件?

项目管理是为了使工作项目能够按照预定的需求、成本、进度、质量顺利完成&#xff0c;而对人员、产品、过程和项目进行分析和管理的活动。 一直以来&#xff0c;项目管理被企业管理人员和各级人员所重视&#xff0c;项目管理是一个项目的灵魂&#xff0c;只有做好了项目管理&am…

IO流 Java

IO 字节输入流 1&#xff1a;我使用while遍历 用循环来遍历文件里的数据 读取性能很差 读取汉字和维语字 会乱码 无法避免的 流使用完毕之后 必须关闭 释放系统资源 out.close();//关闭流 package IO_TEST;import java.io.File; import java.io.FileInputStream;import java…

用《斗破苍穹》的视角打开C#委托2 委托链 / 泛型委托 / GetInvocationList

委托链 经过不懈地努力&#xff0c;我终于成为了斗师&#xff0c;并成功掌握了两种斗技——八极崩和焰分噬浪尺。于是&#xff0c;我琢磨着&#xff0c;能不能搞一套连招&#xff0c;直接把对方带走。 using System; using System.Collections.Generic; using System.Linq; u…

项目环境搭建

注册中心网关配置 spring:cloud:gateway:globalcors:add-to-simple-url-handler-mapping: truecorsConfigurations:[/**]:allowedHeaders: "*"allowedOrigins: "*"allowedMethods:- GET- POST- DELETE- PUT- OPTIONroutes:# 平台管理- id: useruri: lb://…

基于SpringBoot的植物健康系统

目录 前言 一、技术栈 二、系统功能介绍 系统首页 咨询专家 普通植物检查登记 珍贵植物检查登记 植物救治用料登记 植物救治材料管理 植物疾病案例管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&am…

使用MATLAB进行傅里叶变换

1、定义 T1;% 周期0-1 N20;% 最大谐波 k-N:N;% -20:20——-20表示a_(20)e^(j*20*w0*t) N1length(k);%N141 % ceil(N1/2)21%即21是N1的中位数tlinspace(0,T,100); Ntlength(t); ttlinspace(-4*T,4*T,1024); Nttlength(tt);2、原函数 w02*pi/T; % 0-T xt(t>T/4).* 1.0; fig…

支付宝sdk商户私钥 如何生成?

1、先下载密钥工具 https://opendocs.alipay.com/isv/02kipk 2、安装后生成密钥 3、配置密钥 4、将工具生成的公钥复制进去生成公钥 简单来说就是私钥是用工具生成的&#xff0c;不会在页面上显示 商户私钥 支付宝公钥

Python-Scrapy框架(框架学习)

一、概述 Scrapy是一个用于爬取网站数据的Python框架&#xff0c;可以用来抓取web站点并从页面中提取结构化的数据。 基本组件&#xff1a; 引擎(Engine)&#xff1a;负责控制整个爬虫的流程&#xff0c;包括调度请求、处理请求和响应等。 调度器(Scheduler)&#xff1a;负责…

基于SSM的资源共享平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

基于YOLOv8模型的车载摄像头下车辆目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的车载摄像头下车辆目标检测系统可用于日常生活中检测与定位车辆目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算…

源码, AST, IR, CFG之间的关系梳理

在上一篇文章“代码检查过程中为什么需要涉及到编译呢&#xff1f;”中&#xff0c;有提到SAST代码检查工具里编译过程会经历哪些阶段&#xff0c;里面有提到&#xff1a; 一般来说&#xff0c;完整的编译过程会经历&#xff1a;对源代码进行词法、语法、语义的分析&#xff0c…

一个爱国者的润学日记-十月

首先需要科学的准备面试和润。如何进行科学的准备工作呢&#xff1f; 高效的按照面试考察内容进行针对性训练&#xff0c;按 Machine-learning-interview准备保证处于专注的心态&#xff0c;如今互联网娱乐发达&#xff0c;之前即使比赛时我也是一边比赛一边看视频。之后准备面…