Hi3061M开发板——系统时钟频率

news2024/11/28 7:34:21

这里写目录标题

    • 前言
    • MCU时钟介绍
    • PLL
    • CRG_ConfigPLL时钟配置
    • 另附完整系统时钟结构图

前言

Hi3061M使用过程中,AD和APT输出,都需要考虑到时钟频率,特别是APT,关系到PWM的输出频率。于是就研究了下相关的时钟。

MCU时钟介绍

MCU共有三个源时钟:HOSC、LOSC和XTAL。

HOSC是MCU集成的高精度高速振荡器,提供25MHz时钟clk_hosc。clk_hosc是MCU CORE电源域的默认时钟

LOSC是MCU集成的低速振荡器,提供32kHz时钟clk_losc。clk_losc是MCU AON电源域的默认时钟,也为IWDG(Independent Watch Dog)模块提供计数时钟。

XTAL支持高速外部晶体或外部时钟源,提供4MHz ~ 30MHz时钟clk_xtal。

clk_hosc是MCU CORE电源域的默认时钟,说明系统的主要时钟是clk_hosc,也就是25MHz
当然,之后还需要经过PLL锁相环来进行调节频率提供给外设工作时钟。

PLL

PLL
由上图是Hi3061M系统的时钟图,PLL部分,由上节我们知道,数据选择器(MUX)将会选择clk_hosc作为主要时钟,也就是25MHz。
之后会先经过prediv前置分频器进行分频后,再通过反馈分频器fbdiv进行倍频处理,再通过后面两个后置分频器进行分频作为两个工作时钟提供给外设。
对应的数据选择器和分频器都可以通过寄存器进行配置,软件进行设置。
在system_init.c文件中通常有一个相关时钟配置的函数CRG_Config如下:

BASE_StatusType CRG_Config(CRG_CoreClkSelect *coreClkSelect)
{
    CRG_Handle crg;
    crg.baseAddress     = CRG;
    crg.pllRefClkSelect = CRG_PLL_REF_CLK_SELECT_HOSC;
    crg.pllPreDiv       = CRG_PLL_PREDIV_4;
    crg.pllFbDiv        = 48; /* PLL Multiplier 48 */
    crg.pllPostDiv      = CRG_PLL_POSTDIV_2;
    crg.coreClkSelect   = CRG_CORE_CLK_SELECT_PLL;
    crg.handleEx.pllPostDiv2   = CRG_PLL_POSTDIV2_3;
    crg.handleEx.clk1MSelect   = CRG_1M_CLK_SELECT_HOSC;
    crg.handleEx.clk1MDiv = (25 - 1); /* The 1 MHz freq is equal to the input clock frequency / (clk_1m_div + 1). 25 is the div of the clk_1m in CLOCK. */

    if (HAL_CRG_Init(&crg) != BASE_STATUS_OK) {
        return BASE_STATUS_ERROR;
    }
    *coreClkSelect = crg.coreClkSelect;
    return BASE_STATUS_OK;
}

改函数会在初始化时进行调用,当然似乎是上电会自动运行的,并没有在用户main中初始化调用,具体也没有仔细研究。在下面的函数中进行调用了。chipinit.c中

void Chip_Init(void)
{
    CRG_CoreClkSelect coreClkSelect;
    /* Config CRG */
    if (CRG_Config(&coreClkSelect) != BASE_STATUS_OK) {
        Chip_InitFail();
    }

CRG_ConfigPLL时钟配置

接下来详细分析下CRG_Config函数中相关频率的选择和分频。

crg.pllRefClkSelect = CRG_PLL_REF_CLK_SELECT_HOSC;
//图中第一个选择器,系统时钟源选择,clk_hosc,25MHz.
crg.pllPreDiv       = CRG_PLL_PREDIV_4;
//前置分频器,4分频,25/4MHz
crg.pllFbDiv        = 48; /* PLL Multiplier 48 */
//反馈分频器,48倍频,25/4*48 = 300MHz
crg.pllPostDiv      = CRG_PLL_POSTDIV_2;
//后置分频器,2分频,300/2 = 150MHz 
crg.coreClkSelect   = CRG_CORE_CLK_SELECT_PLL;
//系统时钟选择,选择为经过PLL后置分频输出的时钟,也就是150MHz 
crg.handleEx.pllPostDiv2   = CRG_PLL_POSTDIV2_3;
//后置分频器,3分频,300/3 = 100MHz 主要用于ADC

clk_pll_pst1即是150MHz,也就是系统的时钟,大多数外设都是在这个时钟频率上工作。
clk_pll_pst2即是100MHz,是ADC工作的主要时钟。

在这里插入图片描述
ADC的时钟在使用时还需要特定的配置,进行时钟选择。

另附完整系统时钟结构图

在这里插入图片描述

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

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

相关文章

22.1 K8S之KubeSphere实现中间件高可用集群

22.1 K8S之KubeSphere实现中间件高可用集群 一. 章节概述二. WordPress1. WordPress 简介---------------------------------------------------------------------------------------------------一. 章节概述 二. WordPress 1. WordPress 简介 创建并部署 WordPress

MySQL 数据库的性能优化方法方法有哪些?

MySQL 数据库的性能优化方法方法有哪些? 从开发角度来看,一般可以从 SQL 和库表设计两部分优化性能。 SQL 优化 根据慢sql日志,找出需要优化的一些sql语句。 常见优化方向: 避免select *,只查询必要的字段&#x…

62 加密算法

62 加密算法 三种加密算法分类: 对称加密:密钥只有一个,解密、解密都是这个密码,加解密速度快,典型的对称加密有DES、AES、RC4等非对称加密:密钥成对出现,分别为公钥和私钥,从公钥…

sass学习笔记(1.0)

1.使用变量 sass可以像声明变量那样进行使用,这样同样的样式,就可以使用相同的变量来提高复用。 语法为:$ 变量名 在界面中也可以正常的显示 当然了,变量之间也可以相互引用,比如下面 div{$_color: #d45387;$BgColo…

kibana 删除es指定数据,不是删除索引

1 查询条件查询出满足条件的数据 GET /order_header_idx_202410/_search {"from":0,"size":10,"query":{"bool":{"filter":[{"term":{"oh_tenantId":{"value":"0211000001",&…

NeuVector部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、安装方法2.1.1、部署NeuVector前的准备工作2.1.1.1 扩容系统交换空间2.1.1.2 Kubernetes单机部署2.1.1.2.1 部署Docker2.1.1.2.2 部署Kubectl2.1.1.2.3 部署Minikube 2.1.1.3 Helm部署 2.1.2、使用Helm部署NeuVector 2.2、使用方法2.2.1…

YOLOv5改进——添加SimAM注意力机制

目录 一、SimAM注意力机制核心代码 二、修改common.py 三、修改yolo.py ​三、建立yaml文件 四、验证 一、SimAM注意力机制核心代码 在models文件夹下新建modules文件夹,在modules文件夹下新建一个py文件。这里为simam.py。复制以下代码到文件里面。 import…

Mysql中创建用户并设置任何主机连接

Mysql中创建用户并设置任何主机连接 文章目录 Mysql中创建用户并设置任何主机连接背景解决方式 背景 在linux上安装mysql,默认用户是root,但是用navicat连接不了,必须要用ssh隧道连接,现在想用任何主机只要输入账号密码之后就可以连接 解决方式 #创建一个指定用户和IP链接的用…

Java:数据结构-ArrayList和顺序表(2)

一 ArrayList的使用 1.ArrayList的构造方法 第一种(指定容量的构造方法) 创建一个空的ArrayList,指定容量为initialCapacity。 public ArrayList(int initialCapacity) {if (initialCapacity > 0) {this.elementData new Object[init…

鸿蒙微内核IPC数据结构

鸿蒙内核IPC数据结构 内核为任务之间的通信提供了多种机制,包含队列、事件、互斥锁、信号量等,其中还有Futex(用户态快速锁),rwLock(读写锁),signal(信号)。 队列 队列又称为消息队列,是一种常用于任务间通信的数据…

《ASP.NET Web Forms 实现短视频点赞功能的完整示例》

在现代Web开发中,实现一个动态的点赞功能是非常常见的需求。本文将详细介绍如何在ASP.NET Web Forms中实现一个视频点赞功能,包括前端页面的展示和后端的处理逻辑。我们将确保点赞数量能够实时更新,而无需刷新整个页面。 技术栈 ASP.NET We…

Java进阶之路—单元测试Juint(完整详解Juint使用以及Juin注解,附有代码+案例)

文章目录 单元测试Juint35.1 概述35.2 用法手动导包正确的使用方式 35.3 Junit常用注解 单元测试Juint 35.1 概述 针对最小功能单元编写测试代码,Java中最小功能单元是方法,因此单元测试就是针对Java方法的测试。 对部分代码进行测试。 35.2 用法 &…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的新能源停车场管理系统

开题报告 随着新能源汽车的快速普及和普及,新能源车辆的停车和充电需求也越来越大。传统的停车场管理系统无法满足这些新能源车辆的特殊需求,如充电桩分配、充电桩使用情况的实时监测等。因此,开发一种基于 Java 的新能源停车场管理系统成为…

计算机视觉之YOLO算法基本原理和应用场景

YOLO算法基本原理 整体流程 YOLO 将目标检测问题转化为一个回归问题。它将输入图像划分成多个网格单元,每个网格单元负责预测中心点落在该网格内的目标。对于每个网格单元,YOLO 预测多个边界框以及这些边界框中包含目标的类别概率。边界框通常由中心点坐…

Spring Cloud Stream 3.x+kafka 3.8整合

Spring Cloud Stream 3.xkafka 3.8整合,文末有完整项目链接 前言一、如何看官方文档(有深入了解需求的人)二、kafka的安装tar包安装docker安装 三、代码中集成创建一个测试topic:testproducer代码producer配置(配置的格式,上篇文章…

PHP中的HTTP请求:简化你的网络通信

在当今的网络应用开发中,PHP作为一种流行的服务器端脚本语言,经常需要与外部服务进行通信。这通常涉及到发送HTTP请求来获取或提交数据。幸运的是,PHP提供了多种方式来简化HTTP请求的过程,使得网络通信变得轻而易举。 PHP中的HTTP…

stm32h743 threadx + filex(SD卡读写) + CubeMX + CubeIDE

今天整了一下正点原子阿波罗h743的filex,按部就班的使用CubeMX去搭建环境,再用CubeIDE去编写程序,里面也有几个小坑,问题不大。 Step1. 创建CubeMX 首先设置RCC晶振,SYS为tim6 然后勾选sdmmc1 选择4bits,分频系数为4。这个分频系数选4对应一般的sd卡都可以用了,如果好…

单片机死机后在不破坏现场的情况下连接调试器进入调试模式

经常遇到程序在现场卡死了,但是这个时候没有连接调试器,不好找死机原因。 下面说下在程序卡死的时候,在不破坏死机现场的情况下,连接上调试器进行程序调试的方法。 把调试器连接电脑,打开keil做下面的配置&#xff0c…

Llama系列上新多模态!3.2版本开源超闭源,还和Arm联手搞了手机优化版,Meta首款多模态Llama 3.2开源!1B羊驼宝宝,跑在手机上了

Llama系列上新多模态!3.2版本开源超闭源,还和Arm联手搞了手机优化版,Meta首款多模态Llama 3.2开源!1B羊驼宝宝,跑在手机上了! 在多模态领域,开源模型也超闭源了! 就在刚刚结束的Met…

Web自动化Demo-PHP+Selenium

1.新建工程 打开PhpStorm新建工程如下&#xff1a; 打开终端输入如下命令安装selenium&#xff1a; composer require php-webdriver/webdriver 2.编写代码 <?php require vendor/autoload.php;use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver…