当前位置: 首页 > news >正文

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

目录

概述

1 RTC(Real-time counter)介绍

1.1 框架结构

1.2 时钟源

1.3 分辨率与溢出和precaler

2 寄存器功能介绍

2.1 计数寄存器

2.2 事件控制功能

2.3  比较功能

 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:

相关文章:

  • 虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系
  • IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 VSCode + IoT Link 插件
  • SQL脚本规范
  • 【OpenCV基础 1】几何变换、形态学处理、阈值分割、区域提取和脱敏处理
  • 2025.5.12-2025.5.18:开始练习英语口语
  • httpx[http2] 和 httpx 的核心区别及使用场景如下
  • 01 Nginx安装及基本配置
  • PostGIS实现矢量数据转栅格数据【ST_AsRaster】
  • pnpm项目内网迁移
  • minicom串口调试助手
  • Linux云计算训练营笔记day10(MySQL数据库)
  • MapReduce-WordCount实现按照value降序排序、字符小写、识别不同标点
  • 计算机科技笔记: 容错计算机设计05 n模冗余系统 TMR 三模冗余系统
  • C++多态与虚函数详解——从入门到精通
  • 编译原理--期末复习
  • 【2025软考高级架构师】——2022年11月份真题与解析
  • 浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
  • Python字符串格式化(一):三种经典格式化方法
  • Filament引擎(一) ——渲染框架设计
  • 宝塔面板部署前后端项目SpringBoot+Vue2
  • 国新办10时将举行新闻发布会,介绍4月份国民经济运行情况
  • 《缶翁的世界》首发:看吴昌硕王一亭等湖州籍书画家的影响
  • 浦江潮涌征帆劲,上海以高质量发展服务全国发展大局
  • 国内规模最大女子赛艇官方赛事在沪启航,中外41支队伍逐浪
  • 61岁云浮市律师协会副会长谭炳光因突发疾病逝世
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电