3.nrf52832裸机教程--系统时钟

I.说明

作者:WXP(翱翔云端的鸟)

联系方式:328452854@qq.com || 13100610853(联系请注明CSDN)

申明:个人原创,转载请先经过本人同意!

要说的话:个人水平有限,写之前也看过许多大神的博客,不足之处,还请指正!有疑问欢迎大家联系我交流探讨!

 

 

II.环境

软件环境:KEIL-MDK v-5.23.0.0

硬件:nrf52832开发板

 


III.nRF52832时钟树





nrf52832的系统时钟可以从内部或者外部为系统提供时钟源。频率振荡器根据模块的个别要求分配,时钟分配是自动并且按照模块独立分配的,以限制未使用模块的电流消耗。

时钟树中的时钟如下:

● 64MHZ片上振荡器

● 64MHZ晶体振荡器,使用外部32MHZ晶体

● 32.768KHZ±250ppmRC振荡器

● 32.768KHZ晶体振荡器,使用外部32.768KHZ晶体

● 64MHZ振荡器生成的32.768KHZ振荡器

● 64MHZ片上振荡器

 

1. 高速时钟控制器:HFCLK clock controller

高速时钟控制器为系统提供如下时钟:

HCLK64M:64MHZ CPU时钟

PCLK1M:1MHZ外设时钟

PCLK16M:16MHZ外设时钟

PCLK32M:32MHZ外设时钟

 

 

高速时钟控制器的时钟源为:

HFINT:64MHZ内部振荡器

HFXO:64MHZ晶体振荡器

 

当系统请求从HFCLK控制器一个或多个时钟时,HFCLK将自动提供它们。如果系统不再要求从HFCLK提供时钟,则进入省电模式

 

这些时钟仅仅在系统工作的时候有效,当系统进入工作模式时,HFINT(64M内部振荡器)时钟源会自动开始提供所需的时钟

 

HFINT是在HFXO没有启动时作为时钟源响应HFCLK的请求。HFXO的启动可以由HFCLKSTART任务触发并由HFCLKSTOP任务关闭。当HFXO开始稳定运行时将产生一个HFCLKSTART事件

 

HFXO必须运行使用RADIO NFC或者与32.768KHZ RC振荡器相关的校准机制进行校准。

 


2. 低速时钟控制器:LFCLK clock controller

低速时钟源:

32.768KHZ RC振荡器---LFRC

32.768KHZ晶体振荡器---LFXO

32.768KHZ从HFCLK合成---LFSYNT

 

LFCLK时钟是在LFCLKSRC第一次被选择并且由LFCKKSTART任务触发启动的。如果LFXO被选择当做LFCLK的时钟源,LFCLK将先从32.768KHZ的RC振荡器获取时钟源,当LFXO开始启动之后自动切换到LFXO时钟源。当LFXO开始运行时将产生LFCLKSTARTED事件。

 

LFCLK时钟由LFCLKSTOP任务停止

在LFCLK运行时不允许写寄存器LFCLKSRC

 

 

 

IV.nRF52832时钟相关寄存器

1.    TASKS_HFCLKSTART

0x40000000 

启动HFCLK晶体振荡器

 

2.    TASKS_HFCLKSTOP 

0x40000004 

停止HFCLK晶体振荡器

 

3.    TASKS_LFCLKSTART

0x40000008

启动LFCLK时钟

 

4.    TASKS_LFCLKSTOP

0x4000000C

停止LFCLK时钟

 

5.    TASKS_CAL

0x40000010

开始校准LFRC振荡器

 

6.    TASKS_CTSTART

0x40000014

启动校准定时器

 

7.    TASKS_CTSTOP

0x40000018

停止校准定时器

 

8.    EVENTS_HFCLKSTARTED

0x40000100

HFCLK振荡器启动

 

9.    EVENTS_LFCLKSTARTED

0x40000104

LFCLK启动

 

10.  EVENTS_DONE     

0x0000010C

校准LFCLK RC振荡器完成事件

 

11.  EVENTS_CTTO

0x00000110

校准时间超时

 

12.  INTENSET

0x00000304

Bit0:RWHFCLKSTARTED

写1使能HFCLKSTARTED事件中断

读取时读到0表示中断禁止,1中断使能

 

Bit1: RW LFCLKSTARTED

写1使能LFCLKSTARTED事件中断

读取时读到0表示中断禁止,1中断使能

 

Bit3: RW DONE

写1使能DONE事件中断

读取时读到0表示中断禁止,1中断使能

 

Bit4:: RW CTTO

写1使能CTTO事件中断

读取时读到0表示中断禁止,1中断使能

 

 

 

 

13.  INTENCLR

14.  0x00000308

禁止中断寄存器与INTENSET对应

 

15.  HFCLKRUN

0x40000408

HFCLKSTART任务已经产生的状态通知

Bit0: R STATUS

0—HFCLKSTART任务没有产生

1—HFCLKSTART任务已经产生

 

 

16.  HFCLKSTART

0x4000040C

HFCLK状态

Bit0:: R SRC  HFCLK时钟源

0—64MHZ内部振荡器(HFINT)

1—64MHZ晶体振荡器(HFXO)

 

Bit16: R STATE HFCLK状态

0— HFCLK没有运行

1— HFCLK已经运行

 

17.  LFCLKRUN

0x40000414

LFCLKSTART任务已经产生的状态通知

Bit0: R STATUS

0—LFCLKSTART任务没有产生

1—LFCLKSTART任务已经产生

 

18.  LFCLKSTAT

0x40000418

LFCLK状态

Bit[1:0]: R SRC  LFCLK时钟源

0—32.768KHZ RC振荡器

1—32.768KHZ晶体振荡器

2—32.768KHZ从HFCLK合成

 

Bit16: R STATE LFCLK状态

2— LFCLK没有运行

3— LFCLK已经运行

 

 

 

 

 

 

19.  LFCLKSRCCOPY

0x4000041C

LFCLKSRC的复制,当LFCLKSTART任务已经产生时设置

Bit[1:0]: R SRC  LFCLK时钟源

0—32.768KHZ RC振荡器

1—32.768KHZ晶体振荡器

2—32.768KHZ从HFCLK合成

 

20.  LFCLKSRC

0x40000518

LFCLK时钟源

Bit[1:0]: RW SRC  LFCLK时钟源

0—32.768KHZ RC振荡器

1—32.768KHZ晶体振荡器

2—32.768KHZ从HFCLK合成

 

Bit16: RW BYPASS 使能或禁止外部LFCLK晶体振荡器旁路

0— 禁止

1— 使能

 

Bit17: RW EXTERNAL    使能或禁止外部LFCLK晶体振荡器

2— 禁止

3— 使能

 

 

 

IV.nRF52832时钟配置方法

 

nrf5_SDK_14.2.0协议栈里面的时钟驱动定义比较复杂,使用了一个时钟控制块的结构体来初始化和管理系统时钟。

 

我们这里的裸机代码里可以简单的直接操作寄存器就行,可以使用时钟源来配置系统时钟

 

可以在上次的裸机代码中添加2个函数即可

 

void Bsp_LFCLK_Init()
{
    NRF_CLOCK->LFCLKSRC            = (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos);//使用外部32.768KHZ
    //NRF_CLOCK->LFCLKSRC            = (CLOCK_LFCLKSRC_SRC_RC << CLOCK_LFCLKSRC_SRC_Pos);//使用内如RC32.768KHZ
	//NRF_CLOCK->LFCLKSRC            = (CLOCK_LFCLKSRC_SRC_Synth << CLOCK_LFCLKSRC_SRC_Pos);//使用HFCLK生成的32.768KHZ
	NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
    NRF_CLOCK->TASKS_LFCLKSTART    = 1;

    while (NRF_CLOCK->EVENTS_LFCLKSTARTED == 0)
    {
        // Do nothing.
    }
}


 

 

LFCLK低速时钟可以有3个来源:

外部32.768KHZ晶振

内部RC

HFCLK合成

 

 

 

 

 

 

 

void Bsp_HFCLK_Init_Extern()
{
    NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
    NRF_CLOCK->TASKS_HFCLKSTART    = 1;

    while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0)
    {
        // Do nothing.
    }
}

 

由于HFCLK默认是由内部产生的64MHZ振荡器自动生成,所以这里只需要在意如果HFCLK使用外部晶振时候的配置,即开启一个TASKS_HFCLKSTART

 

 

参考我的工程

下载地址:

百度云盘: 链接:https://pan.baidu.com/s/1jH6wVGi密码:nldx

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nrf52832-qfaa是一款由Nordic Semiconductor公司开发的低功耗蓝牙系统级芯片。原理图即为该芯片的电路连接图,它展示了芯片内部的各个功能模块之间的连接方式和电气特性。对于电路设计和电路分析人员来说,原理图是理解芯片内部结构和工作原理的重要工具。 nrf52832-qfaa原理图主要包括以下几个方面的内容: 1. 电源管理电路:负责芯片的供电和电池管理,包括电源接口、电源描述和电源过滤电路等。 2. MCU核心:这部分含有nrf52832芯片的主控制单元,包括处理器核心、存储器和系统总线等。 3. 外设接口:负责芯片与外部设备的通信,如UART、SPI、I2C和GPIO等。 4. 射频前端:负责无线通信,包括蓝牙低功耗无线模块和射频天线。 5. 时钟和定时器:包括系统时钟和RTC(实时时钟)等,用于芯片的时序控制和定时功能。 6. I/O和连接器:包括与外部电路的连接接口和引脚布局等。 7. 其他模块:如中断控制器、电源管理单元、温度传感器等。 通过阅读nrf52832-qfaa的原理图,电路设计人员可以了解芯片的各个模块的连接方式和通信协议,有助于进行电路设计和系统验证。同时,它也为故障排除和错误修复提供了重要的参考依据。原理图是一个工程师在开发和设计过程中不可或缺的工具,它大大简化了电路设计的复杂性,提高了设计的效率和可靠性。 ### 回答2: nrf52832-qfaa是一款蓝牙低功耗系统芯片,可以用于物联网设备和可穿戴设备等领域。原理图是描述该芯片内部电路连接关系的图纸。 nrf52832-qfaa原理图主要包括器件、排列方式、连接线路等信息。例如,原理图会显示芯片上的各个引脚,以及它们之间的连接方式。它会标明不同器件的型号、值以及相互之间的连接关系,以帮助设计师正确布局和设计电路。 在nrf52832-qfaa原理图中,可以看到该芯片的主要模块,包括处理器、存储器、射频收发器、时钟电路等。这些模块通过连接线路相互连接,以实现各个功能模块之间的通信和控制。 此外,原理图还能显示一些外部器件的连接方式,比如电源管理模块、传感器、接口等。这些外部器件可以通过连接线路与nrf52832-qfaa芯片相互连接,以实现更丰富的功能。 通过阅读nrf52832-qfaa原理图,设计人员可以了解芯片的内部架构和连接方式,从而有助于他们进行电路布局和调试工作。同时,对于学习者来说,也可以通过阅读原理图深入了解这款芯片的工作原理和内部结构。 ### 回答3: nrf52832-qfaa是一款由Nordic Semiconductor公司生产的芯片,主要用于物联网设备和无线通信应用。原理图是对该芯片电路连接的图示,展示各个元件之间的连接方式。 nrf52832-qfaa原理图主要包含以下几个部分: 1. 电源部分:包括电源芯片、电源电容、电源指示灯等,用于提供电源给整个芯片及其外围电路。 2. 调试部分:包括调试接口芯片和相应的连接器,用于对该芯片进行调试和软件烧录。 3. 外部接口部分:包括与其他外部元件连接的接口,如UART、SPI、I2C等,用于实现与其他设备的数据通信。 4. 时钟部分:包括晶振和时钟电路,提供准确稳定的时钟信号给芯片的各个模块。 5. 外设接口部分:包括与外部设备连接的接口,如GPIO(通用输入输出)、ADC(模数转换器)、PWM(脉宽调制)等,用于实现与外部设备的数据交换和控制。 6. 射频部分:包括射频收发器、射频天线等,用于无线通信功能。 原理图中通过不同的连线和符号表示了各个元件之间的连接关系和信号传输方式。通过分析原理图,我们可以了解到该芯片的电路结构和各个功能模块的配置情况,以及与其他外部元件的连接方式。这对于硬件工程师在进行电路设计和调试时非常有帮助,同时也为软件开发人员提供了基础的硬件信息,方便他们进行软硬件的协同开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值