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:

相关推荐
海水冷却4 天前
2026年实时音视频服务计费模式指南
实时音视频
番茄灭世神6 天前
PN学堂GD32教程第8篇——RTC
实时音视频
runner365.git6 天前
RTC实现VoiceAgent(二)
大模型·webrtc·实时音视频·voiceagent
xuxie996 天前
N18 RTC
单片机·嵌入式硬件·实时音视频
runner365.git7 天前
RTC会议实时翻译系统
实时音视频
runner365.git7 天前
如何使用RTCPilot配置一个集群RTC服务
webrtc·实时音视频·音视频开发
深念Y8 天前
从WebSocket到WebRTC,豆包级实时语音交互背后的技术演进
websocket·网络协议·实时互动·webrtc·语音识别·实时音视频
海水冷却11 天前
2026 主流 RTC SDK 选型参考,7 大维度横向对比
实时音视频·rtc
TEL1892462247712 天前
IT6636/IT66362(3进1出 / 2进1出 HDMI 2.1 48Gbps Retiming Switch,内置 MCU)
音视频·实时音视频·视频编解码
天上路人17 天前
A-59F 多功能语音处理模组在本地会议系统扩音啸叫处理中的技术应用与性能分析
人工智能·神经网络·算法·硬件架构·音视频·语音识别·实时音视频