HPM6750系列--第十篇 时钟系统

一、目的

        上一篇中《HPM6750系列--第九篇 GPIO详解(基本操作)》我们讲解了HPM6750 GPIO相关内容,再进一步讲解其他外设功能之前,我们有必要先讲解一下时钟系统。

        时钟可以说是微控制器系统中的心脏,外设必须依赖时钟才能正常工作。

        

二、介绍

        首先我们先看一下整个系统的时钟框图。

        1.时钟系统
时钟系统框图

        整个时钟系统由三部分组成,分别为外部时钟输入、时钟源和功能时钟组成,系统中不同电源域的片上模块使用不同的功能时钟,有些偏上模块也会直接使用外部时钟。

        如上图说明,电池备份域使用CLK32K时钟源,XTAL32K 和 RC32K 共同构成 CLK_32K 时钟源。当 XTAL32K 频率稳定时,CLK_32K 来自 XTAL32K 的输 出时钟。当 XTAL32K 尚未稳定或没有外接 32K 晶振时,CLK_32K 来自 RC32K 的输出时钟。两个时钟之间的切 换自动进行。 

        电源管理域使用CLK_24M时钟源,XTAL24M 和 RC24M 共同构成 CLK_24M 时钟源。当 XTAL24M 使能并频率稳定时,CLK_24M 来自 XTAL24M 的输出时钟,当 XTAL24M 关闭或尚未稳定时,CLK_24M 来自 RC24M 的输出时钟。两个时钟之间的切换自动进 行。

        系统电源域使用有五组PLL作为时钟源,PLL自身使用XTAL24M作为参考时钟输入

        功能时钟在多个时钟源中进行选择(八选一),并且每个功能时钟的默认频率都已经设定好。

        

        选择好时钟源之后,每个功能时钟又可以单独设置分频系数。

         

         例如上图中CLK_TOP_HART0功能时钟作为CPU0核心时钟,其选择PLL0CLK0作为时钟源,然后再次二分频,PLL0CLK0的默认输出频率为648MHz,故CPU0的时钟为324MHz。


        针对ADC和I2S模块存在一个二级时钟选择模块,可以从多个功能时钟中选择,这样的好处是多个ADC模块间可以同步、多个I2S模块间也可以同步。

         

        2.直接使用时钟源的模块 

        ​​​​​​​

        3.资源节点 

        在系统电源域中,各种能够被开启或关闭的节点称为资源节点 (resource),包括各功能模块、功能时钟、子系统电源和复位、时钟源等。

        

下游的资源节点 ENET0 的正常工作依赖于 CLK_TOP_ENET0 􏰁供接口时钟,依赖于CLK_TOP_AXI 􏰁供总线时钟,还需要其所在的 CONN 子系统处于非复位状态且电源开关打开。

        简言之,功能时钟也是作为资源节点被统一管理,如果要使用某个模块,那么这个模块的时钟就必须打开,也可以通过设置自动打开。

        关于资源节点更加详细的内容请参考官方文档中描述。涉及到的内容较多,此处就不再一一说明。

        4.PLL设置

        锁相环支持整数分频和小数分频的工作模式。

        ​​​​​​​ 

三、实战 

        vscode打开hello_world工程进入调试模式并定位到board_init_clock函数

cd ~/workspace/work/hpm/hello_world
code .

   

         

        clock_cpu0属于系统资源sysctl_resource_cpu0下CLK_SRC_GROUP_COMMON组clock_node_cpu0节点。

        通过clock_get_frequency函数可以获取功能节点的时钟。

        get_frequency_for_ip_in_common_group函数获取CLK_SRC_GROUP_COMMON组内的模块的时钟。

         

        ①获取节点clock_node_cpu0

        ②获取时钟分频系数DIV=1(2分频)

        ③获取时钟源索引MUX=1(八选一),选择了clock_source_pll0_clk0,也就是pll0作为时钟源。

        

        获取PLL0的输出频率

 

       PLLCTL_SOC_PLL_REFCLK_FREQ=24MHz

        fbdiv=0x1b(27)

        refdiv=0x1(1)

        pos_div = 0x1

 

        Fout = 24M /  1  * 27 / 1  =  648MHz,也就是说PLL0CLK0输出频率为648MHz,我们对功能时钟又进行了DIV=1(二分频),故CPU0时钟等于324MH。

        

        至此,关于HPM6750的时钟系统的基本知识点就讲解完毕,关于资源节点的自动开启、硬件控制等知识点需自行钻研。 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

独立看门狗 IWDG

看门狗介绍 "看门狗"通常指的是计算机科学和信息技术领域中的一种技术或设备,用于监控系统的运行状态,并在系统出现故障或异常情况时采取相应的措施。这种技术或设备起到类似于守卫的作用,确保系统的稳定性和可靠性。 在计算机系统…

算法通关村第十二关—字符串冲刺题(黄金)

字符串冲刺题 一、最长公共前缀 LeetCode14 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串"" 示例1: 输入:strs["flower","fLow","flight"] 输出:&…

【C++学习————引用】

【C学习——————引用】 欢迎阅读新一期的c模块————引用 ✒️个人主页:-Joker- 🏷️专栏:C 📜代码仓库:c_code 🌹🌹欢迎大佬们的阅读和三连关注,顺着评论回访🌹&a…

Windows10 如何开机自动启动redis

前言 当我们在Windows 10上使用Redis时,通常希望能够使Redis服务在系统启动时自动启动,以便我们无需手动介入就能够方便地访问和管理数据。在这个过程中,我们将通过下载、安装和配置Redis为Windows服务的方式,使其成为系统的一部分…

[RTOS移植]--STM32F767移植RTThread

文章目录 通过STM32cube创建一个工程选择要移植的RTOS源下载到本地如果没有重启软件选择对应配置后续补充 通过STM32cube创建一个工程 选择要移植的RTOS源 下载到本地 如果没有重启软件 选择对应配置 Build started: Project: STM32F767 *** Using Compiler V5.06 update 7 (b…

FLStudio2024完整版水果音乐编曲制作软件

FL Studio2024是款专业的音频录制编辑软件,可以针对作曲者的要求编辑出不同音律的节奏,例如鼓、镲、锣、钢琴、笛、大提琴等等任何乐器的节奏律动。FL Studio目前在中国已经受到广大制作人喜爱,使用它制作的音乐作品也已经数不胜数&#xff0…

同义词替换在论文降重中的实际效果评估 快码论文

大家好,今天来聊聊同义词替换在论文降重中的实际效果评估,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:同义词替换在论文降重中的实际效果评…

NestJS入门手册:零基础开发第一个 HTTP 接口

前言 NestJS 是一个用于开发高效、可扩展的 Node.js 服务器端应用程序的框架。其优雅的 TypeScript 支持和深度集成的系统模块,使得开发复杂的后端服务变得前所未有的简单。在这篇文章中,我们将介绍 NestJS 的基础知识,帮助你快速入门。 准…

如何实现分布式调用跟踪?

分布式服务拆分以后,系统变得日趋复杂,业务的调用链也越来越长,如何快速定位线上故障,就需要依赖分布式调用跟踪技术。下面我们一起来看下分布式调用链相关的实现。 为什么需要分布式调用跟踪 随着分布式服务架构的流行&#xf…

软件测试基础知识总结

软件测试的IEEE定义:使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的需求,并找出与预期结果之间的差异。 软件测试的发展趋势: ① 测试工作将进一步前移。软件测试不仅仅是单元测试、集成测…

【消息中间件】Rabbitmq的基本要素、生产和消费、发布和订阅

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、消息队列的基本要素1.队列:queue2.交换机:exchange3.事件:routing_key4.任务:task 二、生产消费模式1.安装pika2.模拟生产者进程3.模…

虚拟机Linux(Centos7)安装Docker

如果没有安装虚拟机的,可以参考这篇VMware虚拟机安装Linux操作系统(CentOS7) 文章目录 0.安装Docker1.CentOS安装Docker1.1.卸载(可选)如何看自己的虚拟机上是否安装过docker? 1.2.安装docker1.3.启动docke…

【观测宇宙】

这个网站一眼看清整个宇宙。可观测范围一亿光年。 Cocosmos | 掌上宇宙 作者开发介绍:Cocosmos 序章 | 掌中宇宙,浩瀚星海,一眼万年 (qq.com)

Cell Systems | 深度学习开启蛋白质设计新时代

今天为大家介绍的是来自Bruno Correia团队的一篇综述。深度学习领域的迅速进步对蛋白质设计产生了显著影响。最近,深度学习方法在蛋白质结构预测方面取得了重大突破,使我们能够得到数百万种蛋白质的高质量模型。结合用于生成建模和序列分析的新型架构&am…

【深度强化学习】TRPO、PPO

策略梯度的缺点 步长难以确定,一旦步长选的不好,就导致恶性循环 步长不合适 → 策略变差 → 采集的数据变差 → (回报 / 梯度导致的)步长不合适 步长不合适 \to 策略变差 \to 采集的数据变差 \to (回报/梯度导致的&am…

RabbitMQ 消息持久化

默认情况下,exchange、queue、message 等数据都是存储在内存中的,这意味着如果 RabbitMQ 重启、关闭、宕机时所有的信息都将丢失。 RabbitMQ 提供了持久化来解决这个问题,持久化后,如果 RabbitMQ 发送 重启、关闭、宕机&#xff…

信息安全和网络安全的区别

信息安全与网络安全都属于安全领域,但它们的范围和重点不同。 信息安全主要关注数据的保护,包括对敏感数据进行加密、防止数据丢失或泄露等措施。信息安全通常与数据存储、传输和处理相关。 而网络安全更侧重于保护计算机系统和网络免受攻击、病毒、蠕…

C++类与对象 (上)

目录 前言: 类和对象的理解 类的引入 类的定义与使用方式 访问限定符 类的两种定义方式 成员变量的命名规则 类的作用域 类的实例化 类对象模型 计算类对象的大小 类对象的存储方式 this指针 前言: C语言是面向过程的,关注的是过…

我想开发一款跨平台桌面软件,请告诉我qt、electron、tauri、pyqt、flutter分别适合开发哪些跨平台桌面

不同的跨平台桌面开发工具适用于不同的应用场景和开发者需求。以下是关于 Qt、Electron、Tauri、PyQt、Flutter 的简要说明,以帮助你更好地选择适合你项目的工具: Qt: 适用场景: Qt 是一个强大的 C 框架,适用于开发需要高性能和原…

【LeetCode】数组精选17题——双指针、滑动窗口、前缀和

目录 快慢指针: 1. 移动零(简单) 2. 复写零(简单) 对撞指针: 1. 两数之和 II - 输入有序数组(中等) 2. 三数之和(中等) 3. 有效三角形的个数&#xff…