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

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

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

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

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 ,和代码配置一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步、至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值