这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 是谁偷走了我的时间?RTC时间异常的秘密

共1条 1/1 1 跳转至

是谁偷走了我的时间?RTC时间异常的秘密

高工
2025-09-03 08:54:09     打赏

嵌入式产品中的RTC(实时时钟)对于维持时间准确性至关重要。然而,实际应用中,我们常常会遇到时间偏差甚至时间回退到1970年的问题。今天,我们来探讨这些时间问题的根源及解决方法。


dbf89c58-87ad-11f0-9080-92fbcf53809c.jpg RTC在嵌入式产品中的重要性


在嵌入式产品中,RTC(实时时钟)模块负责维持时间的准确性,确保设备在各种条件下都能保持时间的正确同步。RTC的准确性直接影响数据记录的可靠性、系统协调的效率、安全机制的有效性以及用户体验的满意度。时间不同步可能导致数据记录错误,影响数据的可追溯性和分析;系统协调失败,影响整体系统的运行效率;安全机制失效,增加安全风险;以及用户体验下降,影响用户对设备的信任和使用体验。因此,确保RTC的准确性和可靠性是嵌入式系统设计中的一个重要环节。



然而,在实际应用中,我们常常会遇到一些不尽如人意的情况,比如时间偏差,甚至是时间回退到1970年。那么,是谁偷走了我们的时间呢?


dbf89c58-87ad-11f0-9080-92fbcf53809c.jpg RTC时间偏差的原因分析


Linux系统启动过程中,系统会检测并挂载RTC模块。挂载完成后,系统会自动从外部RTC芯片中读取时间,并将其设置为系统时间。此后,除非通过相关命令控制RTC的读写,操作系统通常不会再次从RTC中获取或同步时间。那么,为什么重新上电后,时间就不对了呢?可能的原因包括:

  • 外部RTC供电问题:如果外部RTC没有可靠的电源供电,可能会导致亏电或接触不良,从而使RTC时间复位到默认值(通常是1970年)。

  • RTC电路设计问题:如果RTC的精准匹配电路设计不合理,可能会导致时间偏差。

  • RTC驱动问题:如果RTC驱动没有正确配置,系统可能无法从RTC芯片中正确获取时间。


dbf89c58-87ad-11f0-9080-92fbcf53809c.jpg RTC设计与使用最佳实践


1. 硬件设计推荐方案


RTC设计推荐方案如图2所示,若采用I2C/SPI通信的RTC IC且已具备I2C/SPI驱动程序,RTC的使用就显得尤为简单,仅需要加上晶振电路就可以工作了。

dc2d01dc-87ad-11f0-9080-92fbcf53809c.jpg

图2 RTC硬件电路


RTC设计电路简约而不简单,时钟芯片的选择、电路设计、器件放置、阻抗控制、PCB走线规范均会影响RTC的时间基准的稳定性,如图3所示为ZLG致远电子基于Cortex-A7架构的800MHz主频的M6Y2C-256F256LI-T核心板以及配套硬件开发指南,ZLG致远电子每一款核心板均有提供标准的推荐电路,为设计者提供稳定可靠的设计参考。

dc404a26-87ad-11f0-9080-92fbcf53809c.jpg

图3 提供完善硬件支持的核心板

2. 软件配置与验证

以linux为例了解下RTC的使用。在内核配置中选择与硬件匹配的RTC驱动,以生成正确的内核镜像。

dc560e4c-87ad-11f0-9080-92fbcf53809c.jpg

图4 启用PCF8563 RTC驱动

dc6fa1ea-87ad-11f0-9080-92fbcf53809c.png

图5 启用片内RTC

然后结合硬件测试RTC功能,使用命令date –-help获取相关指令。hwclock –w命令将设置的时间同步到硬件,hwclock命令获取RTC时间,判断是否同步成功。




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]