【裸机开发】指定外设根时钟配置实验(三)—— 寄存器分析篇(PERCLK_CLK_ROOT、IPG_CLK_ROOT)

news2024/11/29 4:50:06

前面已经完成了 PLL1 和 8 路 PFD 的初始化,至于其他 PLL 路,等实际需要的时候再初始化也不迟。接下来我们就挑选几个具体的外设时钟进行配置。

假设我们要初始化下面两个根时钟PERCLK_CLK_ROOTIPG_CLK_ROOT。(中途可能还涉及到根时钟 AHB_CLK_ROOT


目录

一、路线选择

1、PERCLK_CLK_ROOT 路线分析

2、IPG_CLK_ROOT 路线分析

3、AHB_CLK_ROOT 路线分析

二、寄存器分析

1、AHB_CLK_ROOT 路线寄存器分析

(1) CBCMR 寄存器的 PRE_PERIPH_CLK_SEL 位

(2) CBCDR 寄存器的 PERIPH_CLK_SEL 位

(3) 总结

2、IPG_CLK_ROOT 路线寄存器分析

3、PERCLK_CLK_ROOT 路线寄存器分析


一、路线选择

1、PERCLK_CLK_ROOT 路线分析

PERCLK_CLK_ROOT 的时钟来源有两个,一个是直接来自于晶振 OSC,一个是来自于 IPG_CLK_ROOT。选择哪一个由 CSCMR1 寄存器的 PERCLK_CLK_SEL 位决定,分频数由 PERCLK_PODF 位来决定。(我们实际进行的是“选择2”)

配置步骤如下:

  • 第一步,设置 CSCMR1 寄存器的 PERCLK_CLK_SEL 位,选择时钟源 IPG_CLK_ROOT
  • 第二步,设置 CSCMR1 寄存器的 PERCLK_PODF 位,设置成 1 分频

2、IPG_CLK_ROOT 路线分析

IPG_CLK_ROOT 的时钟源只有一个,来自于上面的 AHB_CLK_ROOT,一环扣一环,所以接下来的关键就是分析 AHB_CLK_ROOT 的时钟来源。

配置步骤如下:

  • 只需要设置 CBCDR 寄存器的 IPG_PODF 位,设置成 2 分频

3、AHB_CLK_ROOT 路线分析

按照箭头顺序,配置步骤如下:

  • 设置 CBCMR 寄存器的 PRE_PERIPH_CLK_SEL 位,选择 PLL2_PFD2 时钟源
  • 设置 CBCDR 寄存器的 PERIPH_CLK_SEL 位,选择下面那条路线

注意:原本要设置 CBCDR 的 AHB_PODF 位,虽然这里 CBCDR 写的是 4 分频,但是内部 boot rom已初始化成了 3 分频,所以这一步就无需做

二、寄存器分析

1、AHB_CLK_ROOT 路线寄存器分析

这一步要做的是:

  • 设置 CBCMR 寄存器的 PRE_PERIPH_CLK_SEL 位,选择 PLL2_PFD2 时钟源
  • 设置 CBCDR 寄存器的 PERIPH_CLK_SEL 位,设为 0

(1) CBCMR 寄存器的 PRE_PERIPH_CLK_SEL 位

我们先找到 CBCMR 寄存器的 PRE_PERIPH_CLK_SEL 位,设为 01。

(2) CBCDR 寄存器的 PERIPH_CLK_SEL 位

然后是 CBCDR 寄存器的 PERIPH_CLK_SEL 位,设为 0。这里需要搭配总线设计图来看(在第18章的functional description)

我们还需要注意到 PERIPH_CLK_SEL 位的第二个提示信息(NOTE),无论哪个选择都会涉及与MMDC的握手,这个需要参考 CCDR CDHIPR 寄存器的 handshake bypass 和 busy字段。

CCDR 的  MMDC_CH0_ MASK

凡是涉及 mmdc_ch0_axi_podf 字段或者 periph_clk_sel 字段的变化,都需要修改下面这个字段,是允许握手还是屏蔽握手。很显然选择允许,MMDC_CH0_ MASK 位 设为 0。

 CDHIPR 的 PERIPH_CLK_ SEL_BUSY

判断 PERIPH_CLK_SEL 是否在处理其他选择器的选择事件。

  • 0:如果处于空闲状态,便可以处理 CBCDR 寄存器的 PERIPH_CLK_SEL 位的选择
  • 1:如果处于忙线状态,说明需要先等待上一个选择器的占用结束

(3) 总结

寄存器: CCM_CBCMR
基地址: 0x20C4018
初始化操作:
    CCM_CBCMR &= ~(3 << 18);    // 19-18 位清零
    CCM_CBCMR |= (1 << 18);     // 19-18 设为01
   
/*
 * 在操作CCM_CBCDR之前需要做两步:
 *     1、允许和MMDC握手               —— CCDR 寄存器
 *     2、检查 PERIPH_CLK_SEL 是否忙线 —— CDHIPR 寄存器
 *
 * 做完上述两步以后才是操作 CCM_CBCDR 寄存器
 */
寄存器: CCM_CCDR
基地址: 0x20C4004
初始化操作:
    CCM_CCDR &= ~(1 << 17);    // 第 17 位置0

寄存器: CCM_CDHIPR
基地址: 0x20C4048
初始化操作:
    while((CCM_CDHIPR >> 5) & 0x01 != 0);    // 为 0 时表示空闲,跳出循环

寄存器: CCM_CBCDR
基地址: 0x20C4014
初始化操作:
    CCM_CBCDR &= ~(1 << 25);            // 第 25 位设为0

2、IPG_CLK_ROOT 路线寄存器分析

这一步比较简单,只需要找到 CBCDR 寄存器的 IPG_PODF 位,设置成 2 分频

寄存器: CCM_CBCDR
基地址: 0x20C4014
初始化操作:
    CCM_CBCDR &= ~(3 << 8);    // 9-8 位清零
    CCM_CBCDR |= (1 << 8);     // 9-8 设为01

3、PERCLK_CLK_ROOT 路线寄存器分析

这一步要做的是:

  • 第一步,设置 CSCMR1 寄存器的 PERCLK_CLK_SEL 位,选择时钟源 IPG_CLK_ROOT
  • 第二步,设置 CSCMR1 寄存器的 PERCLK_PODF 位,设置成 1 分频

寄存器: CCM_CSCMR1
基地址: 0x20C401C
初始化操作:
    CCM_CSCMR1 &= ~(0x7F);    // 6-0 位清零

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

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

相关文章

【01】如何在电脑上使用wink一键高清短视频

如何在电脑上使用wink一键高清优化短视频画质 文章目录 如何在电脑上使用wink一键高清优化短视频画质1.软件简介1.1痛点1.2解决方案 2.实际操作2.1准备工作2.1.1下载雷电模拟器2.1.2下载wink 2.2.安装软件2.2.1安装雷电模拟器2.2.2安装wink2.2.2.1在雷电模拟器中安装wink2.2.2.…

【操作系统】计算机操作系统知识点总结

文章目录 前言一、操作系统的概念与发展二、操作系统的结构与功能1、操作系统的结构2、操作系统的功能 三、进程管理1、进程2、进程的创建3、进程管理的实现4、进程控制块 四、内存管理1、内存2、内存管理3、内存管理的实现 五、文件系统1、文件系统2、文件系统的主要任务3、文…

微服务springcloud 03.Eureka实现高可用

01.运行时候项目图存在两个item service&#xff0c;和两个Eureka注册中心 02.在已有的项目中扩展service服务数量&#xff08;item service的数量变成两个&#xff09; 第一步&#xff1a;配置item service的启动参数 启动参数的优先级要高于yml文件的优先级 具体参数是&#…

两万字深入浅出yolov5+deepsort实现目标跟踪,含完整代码, yolov,卡尔曼滤波估计,ReID目标重识别,匈牙利匹配KM算法匹配

目录 一&#xff1a;前言 二&#xff1a;跟踪部分&#xff1a; ReID结构​编辑 第一帧&#xff08;生成track&#xff09; 第二帧 更新先验的预测值 状态矩阵的初始化 对预测值进行更新&#xff08;矫正&#xff09;&#xff1a; 匹配完成&#xff0c;进行矫正的更新&…

CSC改派+延期|影像学医生赴英国伦敦国王学院从事访学研究

因美国拒签&#xff0c;又临近派出截止期限。为避免出国指标作废&#xff0c;Q医生希望获得英国高校的邀请函&#xff0c;以申请CSC的改派并延期。我们为其落实了世界名校-英国伦敦国王学院访问学者职位&#xff0c;导师的研究方向属前沿热点&#xff0c;具有广阔的发展前景。Q…

C++【二叉树进阶试题】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C/C相关题解 &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 16.11.17 文章目录 606. 根据二叉树创建字符串102. 二叉树的层序遍历107. 二叉树的层序遍历 II236. 二叉树的最近公共祖先JZ36 二叉搜…

位姿估计 | 从目标特征点检测到目标体坐标系相对于相机坐标系的位姿估计过程

目录 引言技术流程1. PNP介绍2. ICP介绍a. 利用ICP求解目标相对相机的位姿b. 利用ICP求解相机帧间运动 引言 本文接着分享空间目标位姿跟踪和滤波算法中用到的一些常用内容&#xff0c;希望为后来者减少一些基础性内容的工作时间。以往分享总结见文章&#xff1a;位姿跟踪 | 相…

当你全力以赴世界也会为你让路,23级人大女王金融硕士准备中

当你全力以赴&#xff0c;世界也会为你让路&#xff0c;在申报人民大学与加拿大女王大学金融硕士&#xff08;国际班&#xff09;项目的路上你真的努力了吗&#xff1f; 记得曾经在知乎上看过一个问题“什么事情给你的生活带来什么改变”&#xff0c;下边有很多人回答说&#x…

【每日算法】【202. 快乐数】

☀️博客主页&#xff1a;CSDN博客主页 &#x1f4a8;本文由 我是小狼君 原创&#xff0c;首发于 CSDN&#x1f4a2; &#x1f525;学习专栏推荐&#xff1a;面试汇总 ❗️游戏框架专栏推荐&#xff1a;游戏实用框架专栏 ⛅️点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;&…

【Linux】—— 详解计算机体系结构

前言&#xff1a; 在之前&#xff0c;我们已经对Linux环境开发的基本工具进行了详细的学习。接下来&#xff0c;我们将要学习的第一大块便是关于计算机体系结构的知识&#xff01;&#xff01; 目录 前言 &#xff08;一&#xff09;冯诺依曼体系结构 基本介绍 木桶原理 …

SpringSecurity实现前后端分离登录授权详解

在介绍完SpringSecurity实现前后端分离认证之后&#xff0c;然后就是SpringSecurity授权&#xff0c;在阅读本文章之前可以先了解一下作者的上一篇文章SpringSecurity认证SpringSecurity实现前后端分离登录token认证详解_山河亦问安的博客-CSDN博客。 目录 1. 授权 1.1 权限系…

线程间的通信机制与生产者消费者案例

线程间的通信机制与生产者消费者案例 线程间通信 为什么要处理线程间通信&#xff1a; 当我们需要多个线程来共同完成一件任务&#xff0c;并且我们希望他们有规律的执行&#xff0c;那么多线程之间需要一些通信机制&#xff0c;可以协调他们的工作&#xff0c;以此实现多线…

中空百叶玻璃隔断怎么组装

以下是中空百叶玻璃隔断的组装步骤&#xff1a; 1. 准备材料&#xff1a;中空百叶玻璃、接头、U型槽、挂件、固定螺钉等。 2. 根据实际需要&#xff0c;将中空百叶玻璃按照尺寸进行切割。 3. 在地面上铺上一张软垫&#xff0c;将切好的玻璃放置在垫子上&#xff0c;然后在两侧标…

自动化部署工具 drone 部署文档 (使用于 vue java 部署 其他自行研究)

1.准备好docker环境 drone 官网 Drone CI – Automate Software Testing and Delivery 推荐使用宝塔傻瓜式一键安装宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 安装好docker环境之后开始部署容器 这里用到的git版本软件是gogs,其他自己研究 docker版的gogs和实…

Linux内存管理 —— 文件系统缓存和匿名页的交换

转自&#xff1a;https://www.cnblogs.com/wangshaowei/p/14089132.html 文件页 内存回收&#xff0c;也就是系统释放掉可以回收的内存&#xff0c;比如缓存和缓冲区&#xff0c;就属于可回收内存。它们在内存管理中&#xff0c;通常被叫做文件页&#xff08;File-backed Pag…

B045-jQuery案例实战BootStrap

目录 一、BootStrap概述二、BootStrap使用1.起步1.下载或放入BootStrap文件到本地工程里2.在html代码中引入1个css文件和两个js文件3.复制模板代码到本地html文件里会自动应用成bootStrap图样中的效果0.实战案例-环境准备0.实战案例-基本模板 2.布局容器3.栅格系统4.常用组件表…

echarts里type为custom,自定义配置renderItem为柱状形状

echarts里type为custom&#xff0c;自定义配置renderItem为柱状形状 echarts里type为custom&#xff0c;自定义配置renderItem为柱状形状 echarts里type为custom&#xff0c;自定义配置renderItem为柱状形状 主要功能&#xff1a;文本超过柱状形状就隐藏否则就显示&#xff0c;…

风口上的AIGC,技术人才动不动就年薪百万?

2023年&#xff0c;职场人都在讨论什么&#xff1f; 自今年3月以来&#xff0c;随着ChatGPT应用持续走俏&#xff0c;AIGC领域抢人大战盛况空前。随之而来的便是“AI取代人类”“10亿打工人被革命”&#xff0c;AI的发展速度和步伐&#xff0c;超乎我们预期&#xff0c;也影响…

MySQL - 第0节 - MySQL在Centos 7环境安装

1.安装前说明 • 安装与卸载过程中&#xff0c;用户全部切换成为root&#xff0c;一旦安装&#xff0c;普通用户也能够使用。 • 初期练习&#xff0c;mysql不进行用户管理&#xff0c;全部使用root进行&#xff0c;后面学了用户管理&#xff0c;再考虑新建普通用户。 注&#…

互联网医院资质申请条件|互联网医院申请流程

互联网医院是医疗行业应用互联网技术的一种创新形态&#xff0c;它为患者提供便捷的医疗服务&#xff0c;改善了医疗资源的不足和分散情况。在中国&#xff0c;互联网医院的发展也越来越受到重视&#xff0c;互联网医院牌照的申请流程和需要的资料也成为了关注的焦点。 一、互…