GRTC 的最大亮点在于其跨电源模式的持续可用性。无论是系统处于全速运行状态(使用 16MHz 高频时钟),还是进入低功耗休眠甚至完全关机模式(自动切换至 32.768kHz 时钟),GRTC 都能保持计时功能。这种无缝切换机制确保了系统在各种工作状态下都能维持精确的时间基准。
超高精度与超长计时范围
凭借 52 位的计数器宽度和 1 微秒的分辨率,GRTC 创造了令人惊叹的计时能力。理论上,它可以连续运行 142 年才会发生计数器溢出,这一特性使其特别适合需要长期数据记录或事件追踪的应用场景。
功耗优化设计
在低功耗模式下使用 32.768kHz 时钟不仅保证了计时的基本精度,还显著降低了能耗。这种双时钟源的智能切换机制,完美平衡了高精度计时与超低功耗的需求,为电池供电的物联网设备提供了理想的时间管理解决方案
一、prj.conf添加宏
CONFIG_POWEROFF=y
二、初始化函数:
uint64_t user_get_grtc_count()
{
uint32_t syscounterl_value, syscounterh_value, syscounterh;
uint64_t syscounter;
uint8_t m = 1;
do
{
syscounterl_value = NRF_GRTC->SYSCOUNTER[m].SYSCOUNTERL;
syscounterh = NRF_GRTC->SYSCOUNTER[m].SYSCOUNTERH;
syscounterh_value = ((syscounterh & GRTC_SYSCOUNTER_SYSCOUNTERH_VALUE_Msk) >> GRTC_SYSCOUNTER_SYSCOUNTERH_VALUE_Pos);
if (((syscounterh & GRTC_SYSCOUNTER_SYSCOUNTERH_OVERFLOW_Msk) >> GRTC_SYSCOUNTER_SYSCOUNTERH_OVERFLOW_Pos) == GRTC_SYSCOUNTER_SYSCOUNTERH_OVERFLOW_Overflow)
{
syscounterh = syscounterh_value - 1;
}
} while (((syscounterh & GRTC_SYSCOUNTER_SYSCOUNTERH_BUSY_Msk) >> GRTC_SYSCOUNTER_SYSCOUNTERH_BUSY_Pos) != GRTC_SYSCOUNTER_SYSCOUNTERH_BUSY_Ready);
return syscounter = (syscounterh_value < < 32) + syscounterl_value;
}
//30s 定时休眠
void test(void)
{
int systemoff_count = 0;
for (;;) {
dk_set_led(RUN_STATUS_LED, (++blink_status) % 2);
k_sleep(K_MSEC(RUN_LED_BLINK_INTERVAL));
printk("time us = %lld rn",app_syscounter = user_get_grtc_count());
systemoff_count++;
printf("systemoff_count = %drn",systemoff_count);
if(systemoff_count == 30)
{
enter_system_off();
}
}
}
审核编辑 黄宇
-
时钟源
+关注
关注
0文章
108浏览量
16646
发布评论请先 登录
nRF54L15 如何自动管理电源状态
【NCS随笔】nRF54L15使用UICR寄存器保存数据
NRF54L15的NORDIC芯片,adc的内部参考电压
Nordic nRF54L15 GPIO深度解析
nRF54L15 # 超低功耗无线 SoC
使用nRFF54L15初始化一个SPI
Nordic最新开发工具nRF54L15 DK
深入比较nRF52832和Nordic新的产品nRF54L15参数对比
超低功耗蓝牙多协议模块NRF54L15手册
突破性能边界,重塑物联网未来——NRF54L15芯片全面解析

nRF54L15如何初始化GRTC
评论