RTC核心库底层架构与关键技术深度解析!
实时时钟(RTC)核心库的高效运行依赖于一系列底层关键技术的协同工作。从硬件抽象层的寄存器配置到软件逻辑中的时间算法处理,其核心在于实现高精度计时与低功耗维持的平衡。将深入探讨RTC预分频器配置、BCD码与二进制时间转换算法、以及跨时钟域同步机制等关键技术,揭示RTC库如何在不同电源模式下保障时间数据的完整性与准确性,为嵌入式系统提供稳固的时间基准。
实时时钟(RTC)核心库的高效运行依赖于一系列底层关键技术的协同工作。从硬件抽象层的寄存器配置到软件逻辑中的时间算法处理,其核心在于实现高精度计时与低功耗维持的平衡。将深入探讨RTC预分频器配置、BCD码与二进制时间转换算法、以及跨时钟域同步机制等关键技术,揭示RTC库如何在不同电源模式下保障时间数据的完整性与准确性,为嵌入式系统提供稳固的时间基准。
本文将以通信定位二合一Air780EGH系列核心板为例,分享RTC实时时钟应用示例要点。
一、RTC功能示例demo
本示例使用Air780EGH核心板演示RTC核心库的核心功能,主要包括:
任务一:无网络环境下的RTC功能
设置基准年和时区信息初始化RTC;
通过时间戳设置具体时间后,每秒循环打印基于RTC的本地时间。
任务二:网络授时后的RTC同步
设置基准年和时区信息初始化RTC;
等待基站和NTP授时成功,随后每秒循环打印实时时间和RTC时钟时间。
1.1 示例代码
rtc_app.lua核心代码如下,完整demo详见源码仓库最新文件。

1.2 示例功能验证
注意:每次测试时,两个任务只能选择其一进行测试。
1)核心步骤
根据实操教程搭建好硬件环境;
关于SIM卡使用请注意:若连入4G网络通过NTP服务器授时,获取实时时间,需要使用SIM卡;若只需要RTC实时时钟,则不需要SIM卡。
demo脚本代码rtc_app.lua中,按照自己的需求启用对应的task函数;
Luatools烧录内核固件和修改后的demo脚本代码;
将客户端核心板烧录客户端模式代码,并连接到路由器;
烧录成功后,代码会自动运行,打印日志。如果正常运行,会打印NTP时间同步成功、本地时间以及RTC时间等信息。
2)查看日志
通过Luatools工具查看相关日志,如下图示。
选择运行任务一:

选择运行任务二:

二、相关注意事项
2.1 关于RTC和时区
rtc.set() 只能设置UTC时间(0时区时间);
rtc.get() 获取的也是UTC时间(0时区时间)。
RTC时间为UTC时间(0时区时间),与国内时间(东八区时间)相差8小时为正常现象。
2.2 网络同步时间和RTC的关系
NTP成功之后,不需要再调用rtc.set设置系统时间,也不要用rtc.get获取时间,而是用os.date() 获取本地时间更为方便。
2.3 硬件工作状态和RTC的关系
硬件完全掉电(vbat断电),再上电(vbat上电)
此种情况上电开机默认时间为:
{"year":36804,"min":0,"hour":0,"mon":15,"sec":0,"day":12}
硬件没有掉电(vbat一直有电),软件关机此种情况上电开机默认时间为实时时间。
硬件没有掉电(vbat 一直有电),软件重启
此种情况上电开机默认时间为:{"year":36804,"min":0,"hour":0,"mon":15,"sec":0,"day":12}
内部硬件看门狗重启
此种情况上电开机默认时间为:
{"year":36804,"min":0,"hour":0,"mon":15,"sec":0,"day":12}
今天的内容就分享到这里了~
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐
所有评论(0)