Nordic 的RTC(Real-time counter)的介绍

目录

概述

[1 RTC(Real-time counter)介绍](#1 RTC(Real-time counter)介绍)

[1.1 框架结构](#1.1 框架结构)

[1.2 时钟源](#1.2 时钟源)

[1.3 分辨率与溢出和precaler](#1.3 分辨率与溢出和precaler)

[2 寄存器功能介绍](#2 寄存器功能介绍)

[2.1 计数寄存器](#2.1 计数寄存器)

[2.2 事件控制功能](#2.2 事件控制功能)

[2.3 比较功能](#2.3 比较功能)

[2.4 读取COUNTER寄存器](#2.4 读取COUNTER寄存器)


概述

本文主要介绍Nordic 的RTC(Real-time counter),实时计数器(RTC)模块是一种低功耗定时器,运行在低频时钟源(LFCLK)上,具有24位计数器、12位预分频器、捕获/比较寄存器和tick事件生成器。RTC的分辨率为30.517µs,能够在高频时钟(HFCLK)关闭时运行,且在使用前需显式启动LFCLK。RTC的时钟源包括多种内部和外部振荡器,时钟分布自动化以降低功耗。RTC的计数寄存器在预分频器为0时递增,支持TICK事件和溢出事件,默认情况下这些事件是关闭的。事件控制功能允许单独禁用事件以优化功耗,比较功能通过比较寄存器实现,读取计数器寄存器时需暂停CPU以确保安全采样。RTC模块支持低功耗"无TICK"RTOS实现,允许在CPU关闭电源时仍保持调度活动。

1 RTC(Real-time counter)介绍

1.1 框架结构

实时计数器(RTC)模块在低频时钟源 (LFCLK)上提供一个通用的低功耗定时器。

RTC模块具有一个24位COUNTER,一个12位(1/X)预分频器,捕获/比较寄存器和一个tick 事件生成器,用于低功耗,无tick RTOS实现。

1.2 时钟源

RTC将从LFCLK运行。因此COUNTER分辨率为30.517µs。根据源,RTC能够运行,而 HFCLK是关闭的,PCLK16M不可用。软件必须在使用RTC之前显式启动LFCLK.

MCU的时钟控制:

时钟控制系统可以从一系列内部或外部高、低 频率振荡器中获取系统时钟,并根据模块的个别要求将其分配给模块。时钟 分布是自动化的,并按模块独立分组,以限制时钟树中未使用的 分支的当前消耗。

下面列出了CLOCK的主要特性:

1) 64MHz 片上振荡器

2) 64MHz晶体振荡器,使用外部32MHz晶体

3) 32.768 kHz +/-250 ppm RC振荡器

4) 32.768 kHz晶体振荡器,采用外部32.768 kHz晶体

5) 64MHz振荡器合成的32.768 kHz振荡器

6)固件(FW)覆盖振荡器活动控制低延迟启动

7) 自动振荡器和时钟控制,超低功耗分配

1.3 分辨率与溢出和precaler

计数器增量频率:

当RTC停止时,PRESCALER寄存器被读/写。一旦RTC启动,PRESCALER寄存器是只读的 。RTC启动时写入precaler寄存器没有效果。在START, CLEAR和TRIGOVRFLW上重新启动precaler,也就是说,在这些任务上,precaler的值被锁存到一个内部寄存器(<<PRESC>>)。

示例:

1) 期望计数器频率100hz (10ms计数器周期)

10009.576µs计数器周期

2) 期望计数器频率8hz (125 ms计数器周期)

RTC分辨率与溢出:

2 寄存器功能介绍

2.1 计数寄存器

当内部precaler寄存器(<<PRESC>>)为0x00时,LFCLK上的COUNTER递增。<<PRESC>>从PRESCALER寄存器中重新加载。如果启用,TICK事件发生在COUNTER的每个 增量上。默认情况下,TICK事件是关闭的。

时序图- COUNTER_PRESCALER_0

时序图- COUNTER_PRESCALER_1

Overflow 特性

TRIGOVRFLW任务将COUNTER值设置为0xFFFFF0,以允许SW测试溢出条件。当COUNTER从0xFFFFFF溢出到0时发生OVRFLW。

**重要:**默认情况下,OVRFLW事件是关闭的

TICK事件

TICK事件支持低功耗"无TICK"RTOS实现,因为它可选地为RTOS提供常规 中断源,而无需使用ARM®SysTick功能。

使用RTC TICK事件而不是SysTick允许CPU在关闭电源的同时仍然保持 RTOS调度活动。

**重要:**默认情况下,TICK事件是禁用的。

2.2 事件控制功能

为了优化RTC功耗,可以单独禁用RTC中的事件,以防止在触发这些事件时请求PCLK16M 和HFCLK。这是使用EVTEN寄存器进行管理的。

例如,如果应用程序不需要TICK事件,则应该禁用此事件,因为它 频繁发生,并且如果HFCLK可能长时间断电 ,则可能会增加功耗。

2.3 比较功能

1)寄存器列表

CC[0]

CC[1]

CC[2]

CC[3]

2)时序图

当设置比较寄存器时,应该注意RTC比较事件的以下行为:

-- 2-1) 如果在设置CLEAR任务时CC寄存器值为0,则不会触发COMPARE事件。

-- 2-2) 如果设置START任务时CC寄存器为N且COUNTER值为N,则不会触发

比较事件。

-- 2.3)当CC寄存器为N且COUNTER值从N-1转换为N时,会发生COMPARE

2.4 读取COUNTER寄存器

为了读取COUNTER寄存器,对内部的<<COUNTER>>值进行采样。

为了确保<<COUNTER>>被安全采样(考虑到在 a读取期间可能发生LFCLK转换),CPU和核心内存总线通过降低核心ready信号暂停三个周期。读取占用CPU 2个周期,导致COUNTER寄存器读取占用固定的5个 PCLK16M时钟周期。

时序图- COUNTER_READ:

相关推荐
NYFEA1 天前
RTC实时时钟DS1339U-33国产替代FRTC1339M
实时音视频
~央千澈~1 天前
优雅草蜻蜓T语音会议系统私有化部署方案与RTC技术深度解析-优雅草卓伊凡|clam
webrtc·实时音视频·rtc
许白掰2 天前
【stm32】HAL库开发——CubeMX配置RTC,单片机工作模式和看门狗
stm32·单片机·嵌入式硬件·学习·实时音视频
从后端到QT3 天前
SRS流媒体服务器(8)源码分析之rtc/rtmp互相转码详解
运维·服务器·实时音视频
音视频牛哥3 天前
计算机视觉的新浪潮:扩散模型(Diffusion Models)技术剖析与应用前景
人工智能·计算机视觉·ai·音视频·实时音视频·扩散模型
从后端到QT3 天前
SRS流媒体服务器之本地测试rtc推流bug
bug·实时音视频
云资源服务商15 天前
腾讯云IM即时通讯:开启实时通信新时代
云计算·腾讯云·实时音视频
c7_ln25 天前
嵌入式里的时间魔法:RTC 与 BKP 深度拆解
stm32·嵌入式硬件·实时音视频·江协科技
c7_ln1 个月前
STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)
stm32·单片机·实时音视频·江协科技
极术社区1 个月前
【Mini-F5265-OB开发板试用测评】显示RTC日历时钟
单片机·嵌入式硬件·实时音视频