【沁恒蓝牙mesh】CH58x系统时钟配置与计算

news/2025/1/31 7:15:55/

本文主要记录了【沁恒蓝牙mesh】CH58x系统时钟配置与计算

  • 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎
  • 📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:沁恒蓝牙mesh二次开发
    🍁
  • 💬格言:写文档啊不是写文章,重要的还是直白!🔥

———————————————————————————————

【沁恒蓝牙mesh】CH58x系统时钟配置与计算

  • 1.时钟配置
    • 1.1 时钟树分析
    • 1.2 检查寄存器的值

1.时钟配置

SDK中,时钟初始化一般都配置为60KHz,这个时钟值咋算出来的呢?打破砂锅问到底

SetSysClock(CLK_SOURCE_PLL_60MHz);

/*** @brief  系统主频定义*/
typedef enum
{CLK_SOURCE_LSI = 0x00,CLK_SOURCE_LSE,CLK_SOURCE_HSE_16MHz = 0x22,CLK_SOURCE_HSE_8MHz = 0x24,CLK_SOURCE_HSE_6_4MHz = 0x25,CLK_SOURCE_HSE_4MHz = 0x28,CLK_SOURCE_HSE_2MHz = (0x20 | 16),CLK_SOURCE_HSE_1MHz = (0x20 | 0),CLK_SOURCE_PLL_80MHz = 0x46,CLK_SOURCE_PLL_60MHz = 0x48,CLK_SOURCE_PLL_48MHz = (0x40 | 10),CLK_SOURCE_PLL_40MHz = (0x40 | 12),CLK_SOURCE_PLL_36_9MHz = (0x40 | 13),CLK_SOURCE_PLL_32MHz = (0x40 | 15),CLK_SOURCE_PLL_30MHz = (0x40 | 16),CLK_SOURCE_PLL_24MHz = (0x40 | 20),CLK_SOURCE_PLL_20MHz = (0x40 | 24),CLK_SOURCE_PLL_15MHz = (0x40 | 0),
} SYS_CLKTypeDef;

1.1 时钟树分析

首先,参考系统的时钟树图

外接,32MHz晶振经过PLL的15倍频后,再经过一个分频器,输出最终的 HCLK,作为其他一些外设的时钟源。

通过以上代码配置,我们可以得知,HCLK = 60MHz

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Os9bAngO-1691053307584)(pic/image-20230803165158697.png)]

1.2 检查寄存器的值

在CH58X的芯片手册中,RTC是中部分,R16_CLK_SYS_CFG 寄存器是用于时钟配置

名称访问地址描述复位值
R16_CLK_SYS_CFG0x40001008系统时钟配置寄存器0x0005

通过串口打印寄存器的值,看看计算过程

int main(void)
{SetSysClock(CLK_SOURCE_PLL_60MHz);/*串口配置*/GPIOA_SetBits(bTXD1);GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);      // PB8  RXD-配置上拉输入GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);UART1_DefInit();PRINT("R16_CLK_SYS_CFG = 0x%02x \n", R16_CLK_SYS_CFG); /*打印寄存器的值*/
}

在这里插入图片描述

系统时钟配置寄存器(R16_CLK_SYS_CFG)

名称访问描述复位值
[15:8]ReservedRO保留。00h
[7:6]RB_CLK_SYS_MODRWAHCLK 系统时钟源模式选择: 00/10:CK32M(默认 32MHz)进行分频;
01:PLL(默认 480MHz)进行分频;
11:CK32K(默认 32KHz)作为 HCLK。
00b
5ReservedRO保留。0
[4:0]RB_CLK_PLL_DIVRWAHCLK 输出时钟分频系数,最小值为 2,0 代表最大值 32,写 1 将关闭 HCLK。00101b

寄存器的 bit[7:6] = 01 表示 PLL分频,480MHz bit[4:0] = 1000 表示分频系数是 8,所以时钟周期是 480MHz / 8 =60MHz ,和代码配置一致


http://www.ppmy.cn/news/1011032.html

相关文章

Java spring boot 全解Camunda 7,从 0 到 1 构建工作流平台——第二节:Spring boot 简单集成

目录 1. 成果展示2. 环境准备3. 项目构建3.1 项目结构3.2 引入Camunda 依赖3.3 启动spring boot 程序3.4 启动 web app 程序 引言:当今技术发展迅猛,企业对于业务流程的高效管理和自动化需求也日益增长。在这个背景下,Spring Boot和Camunda7成…

python爬虫2:requests库-原理

python爬虫2:requests库-原理 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 目录结构 文章目录 python爬虫2:requests库-原理1. 概述2. re…

在Python中应用RSA算法实现图像加密:基于Jupyter环境的详细步骤和示例代码

一、引言 在当今的数字化社会中,信息安全问题备受关注。随着数字图像在生活中的应用越来越广泛,图像的安全性和隐私性也成为人们关心的焦点。如何在网络上安全地传输和存储图像已经成为一项重要的挑战。RSA(Rivest-Shamir-Adleman)算法作为一种被广泛应用的公钥密码体系,…

第4章 字符串和格式化输入/输出

本章介绍以下内容: 函数:strlen() 关键字:const 字符串 如何创建、存储字符串 如何使用strlen()函数获取字符串的长度 用C预处理器指令#define和ANSIC的const修饰符创建符号常量 本章重点介绍输入和输出。与程序交互和使用字符串可以编写个性…

js-4:BOM是什么?

1、Bom是什么? BOM(Browser Object Model),浏览器对象模型,提供了独立于内容与浏览器窗口进行交互的对象,其作用是跟浏览器做一些交互效果,例如如何进行页面的后退,前进,…

实施高级存储功能

实施高级存储功能 使用Stratis管理分层存储 Stratis 适用于Linux的本地存储管理解决方案。旨在提供更便利的方式执行存储的初始配置,对存储配置进行修改,并使用高级存储功能。 Stratis以管理物理存储设备池的服务形式运行,并透明地为新创…

【开源项目--稻草】Day05

【开源项目--稻草】Day05 1. 显示问题列表1.1 显示问题持续时间 2. 显示问题的标签列表2.1 实现过程 3.显示问题的图片4. 实现分页功能4.1 为什么需要分页(翻页)4.2 实现分页的sql语句4.3 PageHelper的使用控制器的调用和VUE代码的重构分页导航条的配置 1. 显示问题列表 上次课…

dynamic_cast

dynamic_cast 是 C 中用于处理对象多态性的一种类型转换操作符。它在运行时执行安全的向下转型或交叉转型,主要应用于类层次结构中的对象之间。下面是对 dynamic_cast 的详细解释: 1. 何时使用 dynamic_cast: 你可能会使用 dynamic_cast 当…