【裸机开发】系统时钟分路 PLL2_PFDx、PLL3_PFDx 配置实验(二)—— 寄存器分析篇

news2024/12/24 8:58:47

上一篇介绍了 系统时钟的来源、时钟树 以及 PLL1 分路的配置步骤。我们注意到,PLL2、PLL3是固定倍频,无法修改,但是他们下分的 PFDx 分路是可以修改的。只不过我们在初始化的时候,依然按照官方给定的频率进行初始化。


目录

一、了解相关寄存器

二、PLL2_PFDx 初始化

三、PLL3_PFDx 初始化


一、了解相关寄存器

现在只知道要设置 PLL2_PFDx 和 PLL3_PFDx 的频率,但是不知道要通过哪个寄存器设置。我们可以在第 18 章的 Functional Description 下找到 PFD 时钟分路配置对应的寄存器。 

当 PLL 从断电变为上电加载时或者因为被修改处于重新锁定状态时,要求 CCM_ANALOG_PFD_480n 或者 CCM_ANALOG_PFD_528n 寄存器的 PFDx_CLKGATE 位在PLL锁定后,有一个从 1 变为 0 的过程。

这是下面的第一句话,从这句话我们可以得到的信息有:

  • 修改PLL2_PFDx:需要操作 CCM_ANALOG_PFD_528n 寄存器
  • 修改PLL3_PFDx:需要操作 CCM_ANALOG_PFD_480n 寄存器
  • 共通点:都需要操作 PFDx_CLKGATE 位,设为 0

二、PLL2_PFDx 初始化

PLL2_PFDx 由 CCM_ANALOG_PFD_528 寄存器控制。我们会发现,PFD0~3,每一个PFDx都有一组字段,以PFD0为例:

  • PFD0_FRAC:PLL2_PFD0 的分频数,计算公式如下,其中PFD0_FRAC的取值范围为 12~35。假设我们按照官方给定的 PLL2_PFD0 的值设为 352,那么 PFD0_FRAC 应该等于 27,即 PFD0_FRAC 字段应该设为 0x1b

PLL2_PFD0 = 528 × 18 / PFD0_FRAC

  • PFD0_STABLE:该字段为只读,仅用于判断 PLL2_PFD0 是否稳定
  • PFD0_CLKGATE:
    • 设为 1,分频器禁用,即关闭 PLL2_PFD0 输出 ;
    • 设为 0,分频器启用,即使能 PLL2_PFD0 输出 

PLL2一共有四路,所以我们要依次计算每一路的分频数。

寄存器: CCM_ANALOG_PFD_528
基地址: 0x20C8100
初始化操作: 
    unsigned int reg = 0;
    reg |= (27 << 0);                   // PFD0 分频数(27)
    reg &= ~(1 << 7);                   // 分频使能
    reg |= (16 << 8);                   // PFD1 分频数(16)
    reg &= ~(1 << 15);                  // 分频使能
    reg |= (23 << 16);                  // PFD2 分频数(23)
    reg &= ~(1 << 23);                  // 分频使能
    reg |= (47 << 24);                  // PFD3 分频数(47)
    reg &= ~(1 << 31);                  // 分频使能

    CCM_ANALOG_PFD_528 = reg;

三、PLL3_PFDx 初始化

PLL3_PFDx 的初始化过程和PLL2_PFDx  是一样的,PLL3_PFDx 由 CCM_ANALOG_PFD_480 寄存器控制。不同之处在于分频数的计算公式。

  • PFD0_FRAC:PLL3_PFD0 的分频数

PLL2_PFD0 = 480 × 18 / PFD0_FRAC

  • PFD0_STABLE:该字段为只读,仅用于判断 PLL3_PFD0 是否稳定
  • PFD0_CLKGATE:
    • 设为 1,分频器禁用,即关闭 PLL2_PFD0 输出 ;
    • 设为 0,分频器启用,即使能 PLL2_PFD0 输出 
寄存器: CCM_ANALOG_PFD_480 
基地址: 0x20C80F0
初始化操作: 
    unsigned int reg = 0;
    reg |= (12 << 0);                   // PFD0 分频数(12)
    reg &= ~(1 << 7);                   // 分频使能
    reg |= (16 << 8);                   // PFD1 分频数(16)
    reg &= ~(1 << 15);                  // 分频使能
    reg |= (17 << 16);                  // PFD2 分频数(17)
    reg &= ~(1 << 23);                  // 分频使能
    reg |= (18 << 24);                  // PFD3 分频数(18)
    reg &= ~(1 << 31);                  // 分频使能

    CCM_ANALOG_PFD_480 = reg;

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

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

相关文章

2023年,程序员如何构建持续增长的被动收入?

大家好&#xff0c;我是晓衡&#xff01; 我致力于帮助开发者通过技术&#xff0c;实现被动收入&#xff0c;并利用复利效应获得收益最大化。 经过 6 年的探索和实践&#xff0c;取得了一定的成效。 01 起点 我是从 2018 年 7 月份开始全职做这个 Cocos 内容公众号&#xff0c;…

room数据库升级

直接添加表字段&#xff0c;不升级会报异常如上图。 1.表字段或减少表字段 2.增加表 如上等情况需要升级数据库 方法如下&#xff08;以添加表字段为例&#xff09;&#xff1a; Database( entities [XXInfo::class], version 2 // 旧版本为1 ) init { …

Linux:grep、wc命令和管道符

1、grep命令&#xff1a;从文件中根据关键词过滤文件行&#xff0c;语法&#xff1a; grep [-n] 关键词 文件路径 选项-n是可选的&#xff0c;表示在结果中输出匹配到的行的行号关键词&#xff1a;必填&#xff0c;表示要过滤的关键词文件路径&#xff1a;必填&#xff0c;表示…

海思如何编译驱动

一、安装海思的SDK 这一步在海思的说明文档中有&#xff0c;运行sdk.unpack 二、配置内核 进入osdrv/opensource/kernel/ 根据里面的说明文档&#xff0c;没有内核就去下载内核&#xff0c;如果在www.kernel.org网站下载内核十分慢&#xff0c;推荐使用镜像列表下载&#xff0c…

web动画(Animation) - 过渡效果transition

内容目录&#xff1a; 过渡动画&#xff1b;过渡动画的属性&#xff1b; 一、过渡动画 过渡&#xff08;transition&#xff09;作用&#xff1a;- 通过过渡可以指定一个属性发生变化时的切换方式- 通过过渡可以创建一些非常好的效果&#xff0c;提升用户的体验现在我们通过一…

Qt6之样式表2

一、样式选择器类型 一般情况下组件最终都会产生父子、子孙等关系&#xff0c;此时样式选择器类型非常重要&#xff0c;它决定着你的类型是否互相直接独立、互相影响和便捷高效的快速设置样式。 1、如下图常见的一个工具栏&#xff0c;切换时鼠标划过是灰色&#xff0c;选中后是…

QTYX量化系统实战案例分享|每日增量涨停股池叠加形态分析-202306第三弹

前言 “实战案例分享系列”是和大家分享一些股票量化分析工具QTYX在实战中的应用案例&#xff08;包括失败的案例&#xff09;&#xff0c;这样能够帮助大家更好地去理解QTYX中的功能设计&#xff0c;也能更好地帮助大家搭建出属于自己的量化交易系统。 关于QTYX的使用攻略可以…

给大家分享下什么是「API接口」

作为产品经理&#xff0c;了解清楚接口的相关知识是非常有必要的&#xff0c;毕竟总不想被技术大佬认为自己时什么都不懂的需求搬运工。那就往下看下去吧 -----拿去餐馆吃饭的例子 模拟网络请求流程 厨师是后端提供API&#xff0c;服务员是前端请求调用API&#xff0c;我们是用…

Pyside6-第八篇-QLabel文本标签

本篇是Pyside6的第八篇&#xff0c;本章来看看另一个知识点。 文本标签QLabel。它不仅仅可以用于文本&#xff0c;还可以显示富文本和图像。它是一个多功能的小部件&#xff0c;可以根据需要显示不同类型的内容。 部分源码 class QLabel(QFrame):"""QLabel(self…

T9481 T8300 T8110C罗克韦尔自动化可信通信接口

​ T9481 T8300 T8110C罗克韦尔自动化可信通信接口 T9481 T8300 T8110C罗克韦尔自动化可信通信接口 DCS有哪些通讯方式&#xff1f;各有什么缺点&#xff1f; dcs作为大型控制系统&#xff0c;它采用的通信方式无非就是数字通信和模拟通信。数字通信它在DCS使用就是在监视层和…

PCB封装设计实践和文件模板

在之前的文章 详解AD(Altium Designer 23)中的机械层 - 1、详解AD(Altium Designer 23)中的机械层 - 2 中&#xff0c;我们详细介绍了AD中机械层的相关设置&#xff0c;今天结合PCB封装的设计&#xff0c;给出一些实践建议&#xff0c;并分享一个文件模板。 PCB封装设计 PCB&…

SpringBoot 集成 canal

什么是 Canal 阿里巴巴 B2B 公司&#xff0c;因为业务的特性&#xff0c;卖家主要集中在国内&#xff0c;买家主要集中在国外&#xff0c;所以衍生出了同步杭州和美国异地机房的需求&#xff0c;从 2010 年开始&#xff0c;阿里系公司开始逐步的尝试基于数据库的日志解析&#…

Linux常用指令和知识

ls 显示工作目录底下的所有文件/文件夹 使用命令ls, 会直接显示HOME目录下的所有文件 如果不加任何参数,那么ls指定的目录是初始的HOME目录(因为初始的工作目录为HOME目录): 使用ls / 会显示根目录底下的所有文件 如何查看根目录: 三个参数: -a -h -l -a 选项表示all的意思,列…

Python 基于招聘数据可视化系统

1 简介 Python 基于招聘数据可视化系统&#xff0c;视频效果如下&#xff1a; 基于Python的招聘信息可视化系统&#xff0c;附源码 随着国内的经济不断的快速发展&#xff0c;现在学生的就业压力也在逐年增加&#xff0c;网络上的招聘信息非常的丰富&#xff0c;但是对于学生而…

百城巡展 | 人大金仓6月阔步新征程全力开新局

6月上旬&#xff0c;人大金仓“百城巡展”走过天津、杭州、成都&#xff0c;吸引线上线下逾6660人参与&#xff0c;并有14家新成员单位加入金兰生态组织&#xff0c;共同支撑用户更多关键性应用需求&#xff0c;为人大金仓开拓新市场、赋能新行业、构建新生态迈出坚实的一步。 …

驾驶舱数据指标体系设计

大数据时代下&#xff0c;各行各业面对众多的顾客和复杂多变的市场需求&#xff0c;要想及时适应市场变化&#xff0c;掌握市场动态&#xff0c;就需要对各个环节的数据进行分析&#xff0c;得到科学有效的结论来指导决策&#xff0c;这就离不开领导驾驶舱。 — 01 — 什么是…

Vue中如何进行数据可视化图表展示

Vue中如何进行数据可视化图表展示 数据可视化是现代化的数据分析和展示方式&#xff0c;可以使数据更加直观、易于理解和传达。Vue作为一款流行的前端框架&#xff0c;提供了丰富的插件和工具来实现数据可视化图表展示&#xff0c;其中最常用的是Echarts和D3.js。 本文将介绍…

Mind2Web: 首个全面衡量大模型上网能力的数据集

夕小瑶科技说 原创 作者 | 智商掉了一地、ZenMoore 在互联网的浩瀚世界中&#xff0c;存在着无数复杂而扑朔迷离的任务等待我们去解决。如果要设计一个解决很多问题的通用智能体&#xff08;AI agent&#xff09;&#xff0c;无论是关于购物、旅行、学习还是娱乐&#xff0c;…

张驰咨询:如何评估六西格玛咨询公司的专业水平和实际效果?

六西格玛是一个能够帮助企业改进业务流程&#xff0c;提高质量和效率的方法论和工具&#xff0c;也是一种经营管理思想。在选择六西格玛咨询公司时&#xff0c;就需要考虑以下几个方面。 1、咨询公司的信誉和口碑 首先要查明咨询公司的资质和信誉。可以从市场上那些知名度比较…

微信小程序反编译报SyntaxError: Unexpected token ‘}‘ 不完美的解决方法

文章目录 1.反编译报错2.分析已反编译出来的文件3.错误原因4.没有完美解决的方法5.小笔记6.相关链接 1.反编译报错 最近在搞小程序&#xff0c;参考Csdn博客的微信小程序反编译Blog&#xff0c;一步一步操作&#xff0c;获取到了.wxapkg&#xff0c;在wxappUnpacker目录下执行…