嵌入式產(chǎn)品中的RTC(實時時鐘)對于維持時間準確性至關重要。然而,實際應用中,我們常常會遇到時間偏差甚至時間回退到1970年的問題。今天,我們來探討這些時間問題的根源及解決方法。
?RTC在嵌入式產(chǎn)品中的重要性
在嵌入式產(chǎn)品中,RTC(實時時鐘)模塊負責維持時間的準確性,確保設備在各種條件下都能保持時間的正確同步。RTC的準確性直接影響數(shù)據(jù)記錄的可靠性、系統(tǒng)協(xié)調(diào)的效率、安全機制的有效性以及用戶體驗的滿意度。時間不同步可能導致數(shù)據(jù)記錄錯誤,影響數(shù)據(jù)的可追溯性和分析;系統(tǒng)協(xié)調(diào)失敗,影響整體系統(tǒng)的運行效率;安全機制失效,增加安全風險;以及用戶體驗下降,影響用戶對設備的信任和使用體驗。因此,確保RTC的準確性和可靠性是嵌入式系統(tǒng)設計中的一個重要環(huán)節(jié)。
然而,在實際應用中,我們常常會遇到一些不盡如人意的情況,比如時間偏差,甚至是時間回退到1970年。那么,是誰偷走了我們的時間呢?
?RTC時間偏差的原因分析
在Linux系統(tǒng)啟動過程中,系統(tǒng)會檢測并掛載RTC模塊。掛載完成后,系統(tǒng)會自動從外部RTC芯片中讀取時間,并將其設置為系統(tǒng)時間。此后,除非通過相關命令控制RTC的讀寫,操作系統(tǒng)通常不會再次從RTC中獲取或同步時間。那么,為什么重新上電后,時間就不對了呢?可能的原因包括:
- 外部RTC供電問題:如果外部RTC沒有可靠的電源供電,可能會導致虧電或接觸不良,從而使RTC時間復位到默認值(通常是1970年)。
- RTC電路設計問題:如果RTC的精準匹配電路設計不合理,可能會導致時間偏差。
- RTC驅(qū)動問題:如果RTC驅(qū)動沒有正確配置,系統(tǒng)可能無法從RTC芯片中正確獲取時間。
?RTC設計與使用最佳實踐
1. 硬件設計推薦方案
RTC設計推薦方案如圖2所示,若采用I2C/SPI通信的RTC IC且已具備I2C/SPI驅(qū)動程序,RTC的使用就顯得尤為簡單,僅需要加上晶振電路就可以工作了。

圖2 RTC硬件電路
RTC設計電路簡約而不簡單,時鐘芯片的選擇、電路設計、器件放置、阻抗控制、PCB走線規(guī)范均會影響RTC的時間基準的穩(wěn)定性,如圖3所示為ZLG致遠電子基于Cortex-A7架構(gòu)的800MHz主頻的M6Y2C-256F256LI-T核心板以及配套硬件開發(fā)指南,ZLG致遠電子每一款核心板均有提供標準的推薦電路,為設計者提供穩(wěn)定可靠的設計參考。

圖3 提供完善硬件支持的核心板
2. 軟件配置與驗證
以linux為例了解下RTC的使用。在內(nèi)核配置中選擇與硬件匹配的RTC驅(qū)動,以生成正確的內(nèi)核鏡像。

圖4 啟用PCF8563 RTC驅(qū)動

圖5 啟用片內(nèi)RTC
然后結(jié)合硬件測試RTC功能,使用命令date –-help獲取相關指令。hwclock –w命令將設置的時間同步到硬件,hwclock命令獲取RTC時間,判斷是否同步成功。
-
嵌入式
+關注
關注
5189文章
20192瀏覽量
329551 -
實時時鐘
+關注
關注
4文章
325瀏覽量
68046 -
RTC
+關注
關注
2文章
639瀏覽量
71090
發(fā)布評論請先 登錄
密碼進化史 誰偷走了我們的安全感?
STM32的RTC為什么不能重新配置時間
stm32f103rte6第二次設置時間時掛了
什么是實時時鐘(RTC)?如何更改RTC的時間?
通過RTC可以獲取時間待喚醒例程
Linux時間子系統(tǒng)中時間的維護者:timekeeper
---GD32 MCU---RTC使用LXTAL時鐘源異常
stm32 每次復位啟動RTC時間都會變慢
單片機的RTC獲取網(wǎng)絡時間

是誰偷走了我的時間?RTC時間異常的秘密
評論