天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234

單片機定時器中的實時時鐘(RTC)注意事項

更新時間: 2020-02-17
閱讀量:8894

實時時鐘(RTC)是專用于維持一秒時基的計時器。此外,RTC通常用于在軟件或硬件中跟蹤時鐘時間和日歷日期。RTC的許多功能是非常專業的,是維持高精度和非常可靠的操作所必需的。單片機外部有RTC設備,可與I2C或SPI總線接口。

一、實時時鐘概述

實時時鐘的基本功能是產生一秒的間隔并保持連續計數。如下圖所示,該時序圖描述了RTC的基本功能。

introduction1.jpg

還顯示了程序功能A,該功能讀取秒計數器并安排事件B在未來三秒發生。此操作稱為警報。請注意,秒計數器連續運行,并且不會停止和啟動。對于RTC有兩個主要要求,分別是準確性和連續運行。下圖為RTC的常見硬件功能:

introduction2.jpg

RTC通常具有自己的內部振蕩器和外部晶體,并可以選擇使用外部頻率基準。所有時鐘源均以32768Hz運行。外部時鐘源允許使用非常精確和穩定的設備,例如TCXO(溫度補償晶體振蕩器)。

使用多路復用器選擇時鐘源,并將其輸入到預分頻器中,該預分頻器將時鐘分頻為32768(215),以產生一秒的時鐘。

基本上RTC都具有秒計數器,通常為32位或更多。一些RTC具有專門的計數器來跟蹤一天中的時間和日歷日期。

沒有時間和日期計數器的基本RTC為此目的使用軟件。常見的選擇是來自輸出引腳的1Hz方波。RTC將具有多個可能的事件來生成處理器中斷。

RTC通常具有專用的電源引腳,以允許在單片機的其余部分掉電時進行操作。該電源引腳通常連接到電池或單獨的電源。

二、RTC精度和頻率補償

RTC的精度取決于32,768Hz時鐘源。在設計良好的晶體振蕩器中,誤差的主要來源是晶體。外部TCXO可用于高度精確的定時,或者特殊的頻率補償技術可用于較便宜的晶體和內部振蕩器。晶體誤差的三個主要來源:

1.初始電路和晶體容差。
2.晶體隨溫度漂移。
3.晶體老化。

下圖為一些與RTC精度有關的概念:

QQ截圖20200217141605.png

該圖上的深藍色跡線顯示了典型的初始公差以及隨溫度的變化。粉色軌跡僅顯示溫度誤差。補償溫度的關鍵在于,晶體的行為是眾所周知的,并可以通過二次方程式進行預測。如果在制造電路板并且已知溫度之后測量初始誤差,則可以補償最大的誤差源。

經過仔細補償后,黃色面積是準確度的合理目標。請記住,一年中1 ppm大約需要30秒。晶體老化難以彌補。幸運的是,老化通常每年只有幾ppm。

三、如何更改RTC時間

目前,有兩種方法可以更改RTC的時序,作為系統的一部分以補償錯誤。如前面所講的,在秒計數器的每個周期內,可得到預分頻器所計數的振蕩器周期數。

前兩秒是通常的32768個周期。該軟件使用溫度讀數和初始誤差來確定振蕩器正在快速運行,并且32768個周期實際上為0.99990秒。為了補償這個小誤差,該軟件會告訴RTC每四秒鐘將預分頻器的模數更改為32781,以增加一些時間。 下圖為預分頻器計數的振蕩器周期:

introduction4.jpg

此技術的優勢在于,從第二秒到第二秒的時間間隔變化很小。但是,該技術需要一個可調節的預分頻器和其他寄存器來保存特殊的預分頻計數和特殊計數應用之間的秒數。

如果RTC沒有特殊的預分頻器來調整時序怎么辦?下圖為另一種方法,該方法沒有預分頻器:

introduction5.jpg

在這種情況下,框中的數字是秒計數器。顯示的計數是100251,后跟100252。軟件一直在連續計算調整并跟蹤RTC秒計數。當錯誤累積到精確的一秒時,軟件會增加或減少一秒以調整累積的錯誤。

該技術的缺點是,在進行調整時,從秒到秒的變化很大。該技術具有與任何RTC兼容的優勢。

四、 實時時鐘的安全性

安全性是一個有趣的要求。在某些應用程序中,時間用于為客戶計費以使用服務或消耗資源。關于防止或檢測RTC的黑客攻擊,有廣泛的實踐體系。技術的范圍從外殼的入侵檢測到單片機的特殊功能。

如果單片機上的RTC具有特殊的寄存器,可以允許軟件永久鎖定關鍵寄存器。一旦鎖定,就無法更改它們,并且可以防止它們被黑客入侵或失控。需要注意的是,更改時間需要完全復位單片機。

五、時間和日期

一些RTC具有硬件計數器,可以維護一天中的時間和日歷日期。這需要分鐘、小時、天、月、年的計數器,并考慮潤年。時間和日歷日期也可以通過軟件保存。

一個突出的例子是time.h文件中C標準庫中的函數。對于微控制器,該系統可以基于RTC的秒計數器。必須編寫四個小的自定義函數以完全支持time.h庫。

此處感興趣的一個函數由庫中的time()函數調用,該函數以從稱為“紀元”的起點開始的秒數返回時間,通常是1970年1月1日。通常,要讀取的自定義函數硬件計時器名為get_time()或類似的變體。get_time()所做的所有操作都會讀取秒計數器并返回該值。圖書館會做剩下的事情,以秒為單位將此時間轉換為當前日期和日期。

以上就是英銳恩單片機開發工程師分享的單片機定時器中的實時時鐘(RTC)。英銳恩專注單片機應用方案設計與開發,提供8位單片機、16位單片機、32位單片機、運算放大器和模擬開關。

联系我们: 花垣县| 昌平区| 边坝县| 奉化市| 那坡县| 台湾省| 衡山县| 德阳市| 墨玉县| 海盐县| 义马市| 西充县| 阿克苏市| 南乐县| 南靖县| 阿合奇县| 喜德县| 逊克县| 汶川县| 南通市| 河源市| 蒙城县| 高邮市| 满洲里市| 老河口市| 黔江区| 嵩明县| 凤台县| 建昌县| 恭城| 宜城市| 龙陵县| 南开区| 淄博市| 左权县| 宜君县| 将乐县| 潮州市| 阿拉善左旗| 苍溪县| 乌恰县|