欢迎来到纳米网!
首页 > 公众号文章>正文

瑞芯微RV1126B RTC使用详解:实时时钟配置与时间同步

1.RTC介绍

RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片。实时时钟芯片通过引脚对外提供时间读写接口,通常使用独立电池供电,以保证在外部系统关电时,芯片电路正常工作,时间正常运行。

不同的时钟芯片内部机制不一样,但在Linux系统中驱动封装了不同时钟芯片的操作细节,为应用程序提供了统一的时间操作接口。

1.1 开发板的RTC资源

EASY EAI Nano-TB 【默认不带】RTC电路。若想底板支持RTC功能,可通过使用我司的RTC模块进行【扩展】。

扩展RTC的具体操作:【首先】要把底板【断电】,然后再把模块【正面朝上】地插入到底板的40PIN接口上,如下图所示。

图片

插稳后,再进行【上电】操作。

图片

通过ls命令,可查看RTC芯片是否有被系统识别

ls /dev/rtc*

图片

确认驱动成功加载后,可通过下方命令访问驱动,读出RTC芯片的所有信息。

cat /proc/driver/rtc

图片

1.2 RTC时间的读写

这里涉及2个时钟,RTC芯片时钟以及系统时钟。手动管理RTC时钟操作的本质就是:同步时钟(要么把系统时钟同步到RTC芯片时钟上,要么把RTC芯片时钟同步到系统时钟)。

系统时钟:系统时钟本质是一个64位的整数,这个整数代表当前与Epoch Time的时间差(以秒为单位),我们称之为时间戳。这个时钟由CPU主芯片定时器维护,CPU掉电后,时钟信息就会丢失。操作系统时钟的命令为date。

date #查询系统时间 date -s "2023-09-20 11:18:00" #修改系统时间

注:

* Epoch Time:是指一个特定的时间。1970年1月1日0时0分0秒。假设现在距离1970年1月1日0时0分0秒走了N秒,在Linux系统里,时间数值就是N。

RTC芯片时钟:RTC芯片内部所维护的时间。在系统掉电后由电池进行供电。因此系统电源掉电后RTC时间仍然能够正常运行,RTC芯片时钟的作用是在Linux不运行时,依然可以保持时间信息。

芯片时钟同步到系统时钟。

sudo hwclock --hctosys

系统时钟同步到芯片时钟(或者是sudo hwclock -w)。

sudo hwclock --systohc

如果只想查询RTC芯片时钟,但不同步到系统时钟,可以采用以下命令。

sudo hwclock -r

图片

1.3 系统时钟的读写

本文着重介绍的是【RTC时钟】,关于【系统时钟】的详细介绍和操作,可以通过阅读《EASY-EAI-Toolkit/通用组件/系统操作-时间参数》一文进行了解。

1.4 时区和校时服务

时区:【RTC时钟】和【系统时钟】用的都是UTC时间,不同地区所使用的时间,还需要考虑上时区的影响。

校时服务:【RTC时钟】除了可以被手动操作,校时服务也会影响RTC时钟。

关于【时区设置】和【校时服务】,EASY-EAI-Nano-TB可以参考《应用笔记/自动校时与时区设置》一文进行操作。更详细的交互作用机制,可参考《系统时间管理介绍》。

2. 快速上手

2.1 开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署。

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh

图片

2.2 源码下载以及例程编译

首先,在虚拟机后台终端,执行以下命令,创建外设单例源码管理目录:

cd /opt mkdir -p EASY-EAI-Nano-TB/demo

首先,到【百度网盘】上下载相关的单例程序:

链接:https://pan.baidu.com/s/1Br608Hiff2Xs65PzWO_qWQ?pwd=1234

提取码:1234

比如把单例程序下载到:此电脑D:BaiduNetdisk (无规定,用户可自主选择),如下图所示。

图片

再将下载好的单例复制进入虚拟机的文件系统,过程如下图所示。

图片图片图片

最后,进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-Nano-TB/demo/12_RTC ./build.sh

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持/mnt挂载。

图片

编译成功后,会生成一个test-rtc的可执行程序在Release目录下,并会自动部署到开发板的/userdata/目录中。

2.3 例程运行

通过串口调试或ssh调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata

图片

执行例程命令,如下所示。

sudo ./test-rtc

执行效果如下所示。

图片

3. C语言使用案例

RTC的C语言使用案例,代码地址为12_RTC/test-rtc/main.c,供用户编码参考。以下代码展示了对RTC时钟的读写操作流程:

int main(int argc, char const *argv[]) { const char *strDateTime = "2023-09-21 15:22:37"; // 将字符串转换为tm结构体类型的时间信息 struct tm tm = {0}; strptime(strDateTime, "%Y-%m-%d %H:%M:%S", &tm); // 打开RTC设备 int rtc_fd = open("/dev/rtc0", O_RDWR); if (rtc_fd

猜你喜欢

  • 艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    在消费电子持续追求轻薄化与长续航的当下,背光系统能效成为关键瓶颈。传统方案在轻载场景效率低下,散热性能不足,严重制约设备续航并带来可靠性风险。数模龙头艾为电子推出新一代升压型WLED驱动芯片——AW9967FSR,以科学先进的热管理技术,打造卓越的散热...

    2025-12-01
  • Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    该服务器支持跨AI平台获取可信产品信息,简化工作流程、加速设计并提高生产力 为进一步兑现公司为嵌入式工程师开发AI解决方案的承诺,Microchip Technology Inc.(微芯科技公司)今日推出模型语境协议(MCP)服务器。作为AI接口,MCP服务器可直接连接兼容的AI...

    2026-01-23
  • Microchip第22届中国技术精英年会北京站成功闭幕,下一站深圳

    Microchip第22届中国技术精英年会北京站成功闭幕,下一

    Microchip第22届中国技术精英年会(MASTERs)北京站于今日圆满落幕!来自各地的技术专家、行业伙伴和客户齐聚一堂,共同探讨前沿技术与创新应用。活动伊始,Microchip大中华区副总裁Edward Ho先生为本站致开幕词,欢迎各位嘉宾的到来,并分享了对行业发展的展望...

    2026-01-23
  • 国星半导体车规级LED芯片获2025年广东省名优高新技术产品

    国星半导体车规级LED芯片获2025年广东省名优高新技术

    近日,广东省高新技术企业协会正式发布《2025年第二批广东省名优高新技术产品名单》,国星半导体自主研发的车规级LED芯片与垂直LED芯片两大系列产品成功入选。该认定严格围绕技术创新性、质量稳定性、市场成熟度及产业化能力四大维度进行评审,是广东省...

    2025-12-02
  • 云英谷科技荣登2025中国半导体企业影响力百强,专注OLED显示驱动芯片

    云英谷科技荣登2025中国半导体企业影响力百强,专注OLED

    11月14日,世界集成电路协会(WICA)主办的“2025全球半导体市场峰会”在上海成功召开。本次峰会发布了2026全球半导体市场趋势展望暨2025中国半导体企业影响力百强及集成电路新锐企业50强报告。云英谷科技股份有限公司荣登“2025中国半导体企业影响力百...

    2026-01-23
^