时钟控制模块

时钟控制模块

锁相环电路简单的理解

https://www.bilibili.com/video/BV1yS4y1n7vV/?spm_id_from=333.337.search-card.all.click&vd_source=712cdb762d6632543eeeadb56271617a

一 时钟是从哪里来的

  1. 时钟晶振(32.768KHz)供给RTC使用
  2. 在IMX6ULL的T16和T17这两个IO上接了一个24MHz的晶振。

以上这些在原理图上没找到?

(用户手册p350)为了根据不同外设需要的时钟频率。芯片从24MHz晶振生出来7路PLL,有的PLL又会生成PFD

7路PLL分别为

PLL1:ARM PLL供给ARM内核

PLL2:system PLL,528MHz,528PLL,此路PLL分出了4路PFD,分别为PLL2_PFD0~PFD3

PLL3:USB1PLL,480MHz,480PLL,此路PLL分出了4路PFD,分别为PLL3_PFD0~PFD3

PLL4:Audio PLL,主攻音频使用

PLL5:Video PLL,主供视频外设,如RGB LCD接口,和图像处理有关的外设

PLL6:ENET PLL,主供网络外设

PLL7:USB2_PLL,480MHz,无PFD

二 时钟树

在这里插入图片描述

图上橙色梯形的为多路选择器,蓝色的/2和/8分频的数值是可以设置的,不是固定的。

三 要初始化的PLL和PFD

对于PLL1-PLL3以及对应的PFD是要初始化的。

对于要初始化的PLL和PFD要设置的时钟频率是多少那?

一般按照时钟树图表中的值,设置即可。对于图上的右边的外设的根时钟,例如EASI_CLK_ROOT的值,这些的值按照手册(P638)最大的频率设置即可。

设置PLL1输出时钟

image-20230516223132890

根据图上此时PLL1位996MHz,经过CACRR[ARM_PODF]寄存器设置为2分频,此时ARM内核的主频就是996/2为498MHz。

此时若想设置ARM内核为528MHz,设置CACRR寄存器2分频,则PLL1需要为1056MHz,也要注意看下手册里PLL1的值,是否在范围内。

设置分频值

CACRR寄存器(手册p666)的bit0-3,为ARM_PODF位,可设置数字,0-7,即1-8分频。此处二分频设置ARM_PODF为1。

主频时钟的修改

由下图可知主频时钟的来自pll1_sw_clk,pll1_sw_clk的时钟来源有两路,分别是PLL1、step_clk。若要修改主频时钟,修改PLL1的值就可以了,但是在修改PLL1的值之前,pll1_sw_clk要临时使用step_clk时钟。

image-20230516230023335

设置PLL1输出时钟

(手册P644)image-20231124145815612

由上图知,PLL1来自24MHz的参考时钟,PLL1的输出频率范围为650MHz-1.3GHz。PLL1的输出频率计算公式如下:

PLL output frequency = Fref*DIV_SEL/2

Fref参数:

Fref参数的值为24MHz

DIV_SEL的参数和CCM_ANALOG_PLL_ARM寄存器的DIV_SELECT(0-6bit)有关,见(手册715)如下图

image-20231124150650193

看完上面的内容后。

1 设置PLL1=1056MHz。PLL1=pll1_sw_clk。pll1_sw_clk有两路来源,一路是pll1_main_clk,将CCSR寄存器的pll1_sw_clk_sel位置为1。另一路是,step_clk,将CCSR寄存器的pll1_sw_clk_sel置为0。

2 在修改PLL1的时候,也就是设置系统时钟的时候需要给IMX6ull一个临时的时钟,也就是step_clk。在修改PLL1的时候需要将pll1_sw_clk切换到step_clk。

3 设置step_clk。step_clk也有两路来源,由寄存器CCSR(手册P664)的step_sel位决定,为0使用osc_clk=24MHz,为1使用其他,这个暂时不考虑。

4 时钟切换成功以后就可以修改PLL1的值。

5 通过CCM_ANALOG_PLL_ARM寄存器(手册P714)的DIV_SELECT位(bit0-6)来设置PLL1的频率,设置公式为

Output = fref**DIV_SEL/2 ,1056 = 24*DIV_SEL/2 =>DIEV_SEL = 88

设置CCM_ANALOG_PLL_ARM寄存器(手册P714)的DIV_SELECT位=88即可。PLL1=105MHz。

还要设置这个寄存器的ENABLE位,使能。

6 在切换回PLL1之前,设置CACRR寄存器的ARM_PODF=1,设置成2分频,一定不要忘记先分频!!

/*初始化时钟*/
void imx6u_clkinit(void)
{/*初始化6U的主频为528MHz*//*CCM->CCSR 右移2位,就是pll1_sw_clk_sel位,若为1,说明使用的是pll1_main_clk*/if(((CCM->CCSR >> 2) & 0X1) == 0){/*使用osc_clk作为临时的时钟,先设置CCSR的step_sel位(bit8)为0,在设置CCSR的pll1_sw_clk_sel		位(bit2)为1*//*设置step_sel位为0*/CCM->CCSR &= ~(1<<8);/*设置pll_sw_clk_sel位为1*/CCM->CCSR |= (1<<2); }/*设置PLL1的频率为1056MHz*//*bit13为1,是使能PLL_ARM,bit0-6置为88*/CCM_ANALOG->PLL_ARM = (1<<13) | (88<<0 & 0x7f);/*设置CACRR寄存器分频值为2*/CCM->CACRR &= (1<<0);/*切换为PLL1,将CCSR的pll1_sw_clk_sel(bit2)位设置为0*/CCM->CCSR &= ~(1<<2);}

设置PLL2输出时钟

(手册645)

image-20231124155224681

对于PLL2(System PLL)也来自24MHz的参考时钟,虽然也有分频DIV_SELECT(0bit)。但是PLL2默认输出频率设置为528MHz。

image-20231128231934747

PLL2的使能,将上面的寄存器中bit13置为1即可。设置PLL2的输出频率为528MHz,将上面寄存器中bit0置为1,使用公式PLL2 = Fref*22 = 24*528

设置PLL2的PFD输出
PFD的使能

查看寄存器CCM_ANALOG_PLL_SYS_SS(手册721页),通过使这个寄存器的ENABLE,可以使能PLL2的PFD。

image-20231128230623070

PFD的使能,将上面寄存器的bit15置为1即可。

image-20231128232623074

设置PFD的分频系数为0,将上面寄存器的bit0-29置为0即可。

PFD的输出频率

(手册P736)

寄存器CCM_ANALOG_PFD_528用于设置4路PFD的输出频率。

image-20231129090838177

PFD相关的输出频率根据时钟树上的值设置即可,输出频率计算公式 PFD = 528*18/PFD0_FRAC 。

设置PFD0的输出频率为352MHz。

​ 根据上面图片寄存器,PFD0_FRAC的值为27,设置bit5-0为0X1B

设置PFD1的输出频率为594MHz。

​ 根据上面公式PFD1_FRAC的值应为16,设置bit13-8为0X10

设置PFD2的输出频率为400MHz。

​ 根据上面公式PFD2_FRAC的值应为24,设置bit21-16为0X18

设置PFD3的输出频率为297MHz。

​ 根据上面公式PFD3_FRAC的值应为32,设置bit29-24为0X20

设置PLL3(USB PLL) 输出时钟

(手册645)

image-20231128233707807

PLL3来自24MHz的参考时钟,PLL3时钟的输出频率为480MHz。

image-20231128234059755

设置PLL3的输出频率为480MHz,将上面寄存器的bit1-0置为1,即使用公式PLL3 out = 24*20=480

PLL3输出使能,将bit13置为1。

PLL3上电使能,将bit12置为1。

USBPHY使能,将bit6置为1。

PFD的输出频率

(手册734)

寄存器CCM_ANALOG_PFD_480用于设置4路PFD的输出频率。

image-20231129104859827

PFD相关的输出频率根据时钟树上的值设置即可,输出频率计算公式 PFD = 480*18/PFD0_FRAC 。

设置PFD0的输出频率为720MHz。

​ 根据上面图片寄存器,PFD0_FRAC的值为12,设置bit5-0为0XC

设置PFD1的输出频率为540MHz。

​ 根据上面公式PFD1_FRAC的值应为16,设置bit13-8为0X10

设置PFD2的输出频率为508.2MHz。

​ 根据上面公式PFD2_FRAC的值应为11,设置bit21-16为0XB

设置PFD3的输出频率为454.7MHz。

​ 根据上面公式PFD3_FRAC的值应为19,设置bit29-24为0X13

四 其他外设时钟配置

image-20231129135959103

这里我们设置PERCLK_CLK_ROOT、IPG_CLK_ROOT。由于这两个外设时钟的来源是AHB,所以设置这两个外设之前,先设置PERCLK_CLK_ROOT外设。

外设时钟频率该设置为多少

对于外设相关时钟输出频率值根据手册来设置(手册642)。

image-20231129140548906

1 设置AHB_CLK_ROOT时钟

根据(手册p642)的参考值,设置AHB_CLK_ROOT频率为132MHz,根据时钟有多路来源,这里我们就选中其中一种进行设置。选择PLL2的PFD2输出频率为396MHz。

image-20231129115258109

根据时钟树从左到右,我们需要操作的寄存器为CBCMR、CBCDR。

设置CBCMR寄存器(手册p669)的PRE_PERIPH_CLK_SEL位(bit18-19)为01,

设置多路选择CBCDR寄存器(手册p666)的PERIPH_CLK_SEL(bit25)为0,

设置CBCDR寄存器AHB_PODF位(bit10-12)为010,设置分频值3。

因此AHB_CLK_ROOT的输出频率为PFD2/3 即396/3=132MHz。

void AHB_CLK_ROOT_132(void)
{/*设置AHB_CLK_ROOT=132MHz*//*先将bit18-19位清0*/CCM->CBCMR &= ~(3<<18);/*设置bit18-19为1*/CCM->CBCMR |= (1<<18);/*bit25值为0*/CCM->CBCDR &= ~(1<<25);/*这里根据手册(手册)提示,操作此寄存器要等待握手信号*/while(CCM->CDHIPR & (1<<5));}
2 设置IPG_CLK_ROOT时钟

image-20231129143031921

AHB时钟输出为132MHz已经设置好了。接下来设置CBCDR寄存器(手册p666)的IPG_PODF位(bit8-9)01,设置2分频,这里IPG_CLK_ROOT就完成了66MHz的输出。

void IPG_CLK_ROOT_66()
{	/*将bit8-9清0*/CCM->CBCDR &= ~(3 << 8);/*设置2分频*/CCM->CBCDR |= (1 << 8);
}
3 设置PERCLK_CLK_ROOT时钟

image-20231129142212272

在设置IPG_CLK_ROOT时钟的时候已经设置CBCDR寄存器的IPG_PODF位,设置为2分频。所以现在这里是66MHz。

设置多路选择寄存器CBCMR(P669)的PRE_PERIPH_CLK_SEL位(bit18-19)为01,选择IPG_CLK_ROOT来源。

设置CSCMR1时钟PERCLK_PODF位(bit0-5)为0,1分频。这就完成了PERCLK_CLK_ROOT的时钟设置。

void PERCLK_CLK_ROOT_66()
{	/*先将bit6置为0,选择时钟源为IPG_CLK_ROOT*/CCM->CSCMR1 &= ~(1<<6);/*先将bit0-5清0,然后置为0,即设置分频值为1*/CCM->CSCMR1 &= ~(0X3F << 0);
}

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

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

相关文章

计算机图形学:直线的扫描转换算法解析与实现

直线的扫描转换&#xff1a; DDA算法&#xff1a; 推理&#xff1a; 在计算机显示图形时&#xff0c;由于显示计算机的分辨率是有限的所以我们在绘制图形时需要将图形从连续量转换成离散量才能完成图形的绘制&#xff0c;直线的扫描转换就是将连续量转换为离散量的过程。 对…

wsj0数据集原始文件.wv1.wv2转换成wav文件

文章目录 准备一、获取WSJO数据集二、安装sph2pipe三、转换代码四、结果展示 ​ 最近做语音分离实验需要用到wsj0-2mix数据集&#xff0c;但是从李宏毅语音分离教程里面获取的wsj0-2mix只有一部分。从网上获取到了完整的WSJO数据集后&#xff0c;由于原始的语音文件后缀是wv1或…

怎么在NAS里找照片?教你一招,精准定位

每次拍照 咔咔一顿拍 好多文档 咔咔一顿存 需要到的时候 却依稀只记得时间和部分关键词 那么怎么快速在NAS里精准定位 找到“命中注定”的它呢 嘿还真有 铁威马的Terra Search 精准搜索 快速定位 So easy&#xff01; 01 什么是Terra Search Terra Search 通过建立数据…

中国信通院发布《中国算力发展指数白皮书》(2023)

加gzh“大数据食铁兽”&#xff0c;回复“20231129”&#xff0c;获取材料完整版 导读 2023 年白皮书在 2022 年的基础上&#xff0c;加强了全球和我国算力发展的研究&#xff0c;客观评估我国整体、各省份及各城市现阶段的算力发展水平进一步给出我国算力二十强市榜单&…

网关路由器双栈配置中的IPv6相关选项解析

1、引言 讲知识往往是枯燥无味的&#xff0c;我们先从问题入手。家庭网关&#xff08;光猫&#xff09;、路由器是我们每个人或多或少都有所接触的2种设备。现在一般都是光纤入户&#xff0c;通常每个家庭配备一个光猫和一台家用路由器。 目前有许多网络服务已经提供了IPv6支…

ASUS(华硕) B760M-AYW WIFI D4_解决wifi不能使用

1、最近新购买了一套 diy电脑主机&#xff0c;选用的是 ASUS B760M-AYW WIFI D4电脑主板 win10 系统&#xff0c;到货后 发现右下角电脑图标处及网络适配器中 没有wifi选项 首先 在官网和旗舰店客服处&#xff0c;确认了 该主板 有集成wifi模块&#xff0c;鲨鱼鳍天线未安装…

Motion Plan之带动力学约束路径搜索

Motion Plan之搜索算法笔记 Motion Plan之基于采样的路径规划算法笔记 为什么要动力学规划&#xff1a; 前面几章介绍的路径规划&#xff0c;我们只是认为机器人是质点&#xff0c;这节课要说的就是&#xff0c;如何在考虑机器人的运动学模型下再去找一个安全可行的路径。考虑…

后端项目连接数据库-添加MyBatis依赖并检测是否成功

一.在pom.xml添加Mybatis相关依赖 在Spring Boot项目中&#xff0c;编译时会自动加载项目依赖&#xff0c;然后使用依赖包。 需要在根目录下pom.xml文件中添加Mybatis依赖项 <!-- Mybatis整合Spring Boot的依赖项 --> <dependency><groupId>org.mybatis.s…

UE Web Remote Control

前言 最近在研究UE自启WEB服务和网页通信以此来通过网页与UE进行数据交互&#xff0c;这样最好的方式就是可以摒弃掉整个繁琐的通信连接流程如TCP UDP&#xff0c;但是找到的一些方法都不是很适用&#xff0c;尤其是WEBUI这个插件它只适合内嵌到UE本身才能完成交互&#xff0c;…

LeetCode(37)矩阵置零【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 73. 矩阵置零 1.题目 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]…

仓储货架生产厂家|拥有编码器+激光传感器的海格里斯HEGERLS料箱式四向穿梭车

随着高新科技的迅猛发展&#xff0c;仓储物流行业已慢慢朝着无人化、自动化、智能化、密集化方向快速发展&#xff0c;用户的需求量也随之日益提升。在众多仓储物流设备中&#xff0c;四向穿梭车越来越得到各大中小企业所青睐和投入使用。四向穿梭车不但具有良好的可延性与适配…

2022年土地出让数据,超多字段,附数据可视化

分享一个土地出让数据&#xff0c;详细信息如下&#xff1a; 数据名称: 2022年土地出让数据 数据格式: Shp、excel 数据时间: 2022年 数据几何类型: 点 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 部分字段如下&#xff1a; 如需获取可搜“吧唧数…

【面试心经】——上海广升智能科技有限公司

介绍 本文记录的是2018.5月份应聘上海广升linux 开发岗位的经历。 福利待遇&#xff1a; BOSS 岗位薪资&#xff1a;15K ~25K。 每月一天带薪病假或事假。 国家规定外有额外4天年假。 每年两次旅游&#xff0c;上半年国外&#xff0c;下半年国内。 每年两次调薪机会&…

Ultipa参加国际科学会议KGSWC2023

近日&#xff0c;领先的国际科学会议 KGSWC 2023&#xff0c;在西班牙萨拉戈萨大学召开&#xff0c;Ultipa Graph参加。 KGSWC2023是第五届伊比利亚-美洲会议和第四届印度-美洲知识图谱与语义网大会的联合论坛。自2019年成立以来&#xff0c;KGSWC一直是一个重要的学术活动&am…

测试工程师核心软技能「情绪管理」

大家好呀&#xff0c;我是楼仔。 我之前经常提到一句话&#xff1a;大多数时候所谓的“技术之玻璃天花板”&#xff0c;其实只是缺乏软技能而已。 所以粉丝朋友们&#xff0c;我们除了需要关注技术&#xff0c;更需要注重软技能的提高。 关于软技能相关的文章&#xff0c;之…

婚恋小程序APP一站式开发搭建丨幸福全方位婚恋一线牵丨相亲交友婚恋小程序使用手册丨实名认证丨语音交友丨源码交付,支持二开丨同城交友

1: 如何在相亲交友婚恋小程序寻找属于自己的幸福 打开相亲交友婚恋小程序&#xff0c; 在首页遇到自己喜欢的人&#xff0c; 点击详情&#xff0c; 然后点击喜欢&#xff0c; 如果对方也喜欢你&#xff0c; 互相喜欢成功&#xff0c; 可以在缘分页看到对方的微信&#xff0c; 添…

基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

Android Studio Giraffe-2022.3.1-Patch-3安装注意事项

准备工作&#xff1a; android studio下载地址&#xff1a;https://developer.android.google.cn/studio/releases?hlzh-cn gradle下载地址&#xff1a;https://services.gradle.org/distributions/ 比较稳定的网络环境&#xff08;比较android studio相关的依赖需要从谷歌那边…

Redis集群模式

Redis集群主要有三种模式 主从复制模式&#xff08;Master-Slave&#xff09;、哨兵模式&#xff08;Sentinel&#xff09;和Cluster模式 主从复制模式&#xff1a;适用于数据备份和读写分离场景&#xff0c;配置简单&#xff0c;但在主节点故障时需要手动切换。哨兵模式&…

Google分析中的基础概念

当提到Google分析时&#xff0c;我们通常指的是一种用于跟踪和分析网站和应用程序数据的工具。在使用Google分析之前&#xff0c;了解其基础概念对于正确配置和有效使用该工具非常重要。 1、帐户&#xff08;Account&#xff09;&#xff1a;帐户是Google分析中的最高层级。一…