DS17887 3V/5V實時時鐘


一、引言
DS17887是由Maxim Integrated(原Dallas Semiconductor)生產(chǎn)的一款高性能3V/5V實時時鐘(RTC)模塊。它集成了實時時鐘功能、非易失性存儲器(NV RAM)、電源控制電路以及多種增強特性,廣泛應(yīng)用于工業(yè)控制、醫(yī)療設(shè)備、網(wǎng)絡(luò)接入設(shè)備、筆記本電腦等領(lǐng)域。本文將詳細介紹DS17887的功能、特點、引腳分配、工作原理、應(yīng)用實例以及相關(guān)的驅(qū)動開發(fā)等內(nèi)容。
二、DS17887概述
DS17887是DS17x87系列實時時鐘模塊中的一員,該系列還包括DS17287和DS17487。這些模塊被設(shè)計為行業(yè)標準DS12885和DS12887的后續(xù)產(chǎn)品,提供了更強大的功能和更高的性能。DS17887采用24引腳DIP封裝,集成了石英晶體、鋰電池以及必要的時鐘電路,構(gòu)成了一個完整的、自包含的計時模塊。
產(chǎn)品詳情
DS17285, DS17485, DS17885, DS17287, DS17487以及DS17887實時時鐘(RTC)是工業(yè)標準的DS12885和DS12887的后續(xù)產(chǎn)品。DS17285,DS17485和DS17885 (下文以DS17x85代替)提供一個實時時鐘/日歷,一個定時鬧鐘,三個可屏蔽中斷(共用一個中斷輸出),可編程方波輸出和114字節(jié)的電池備份NV SRAM。DS17x85還集成了許多增強特性,例如硅序列號,電源開/關(guān)控制電路,和2K、4K或8K字節(jié)的電池備份NV SRAM。DS17287,DS17487和DS17887 (下文以DS17x87代替)在24引腳DIP模塊封裝內(nèi)集成了晶振和鋰電池。DS17x85和DS17x87的電源控制電路允許系統(tǒng)通過外部激勵開啟電源,例如鍵盤或時間和日期(喚醒)鬧鐘。/PWR輸出引腳可被任一此類事件觸發(fā),并可用于開啟外部電源。/PWR引腳受軟件控制,以便在某個任務(wù)完成后,能夠接著關(guān)斷系統(tǒng)電源。
對于所有少于31天的月份,所有器件的日期都能夠在月末自動調(diào)整,并帶有閏年補償。該器件可配置為24小時或12小時格式,并且?guī)в蠥M/PM指示。精確的溫度補償電路用于監(jiān)控VCC。一旦檢測到主電源失效,器件可以自動切換到備用電源。鈕扣式鋰電池可以連接到DS17x85的VBAT輸入引腳,在主電源掉電時保持有效的時間和日期。DS17x85和DS17x87還包括了VBAUX輸入,用于電源輔助功能,例如/PWR控制。該器件通過一個復用的、字節(jié)寬度接口訪問。
應(yīng)用
嵌入式系統(tǒng)
網(wǎng)絡(luò)集線器、橋接器和路由器
安全系統(tǒng)
電表
特性
集成了工業(yè)標準的DS12887 PC時鐘外加增強特性
RTC計算秒、分、時、星期、日期、月份和年,并且具有閏年補償,有效期至2099年
可選的+3.0V或+5.0V工作電壓
SMI恢復堆棧
64位硅序列號
電源控制電路,支持系統(tǒng)通過日期/時間鬧鐘或鍵盤開啟電源
晶體選擇位,允許RTC工作于6pF或12.5pF晶體
12小時或24小時時鐘,具有帶AM和PM指示的12小時模式
114字節(jié)通用、電池備份NV SRAM
擴展的電池備份NV SRAM
2048字節(jié)(DS17285/DS17287)
4096字節(jié)(DS17485/DS17487)
8192字節(jié)(DS17885/DS17887)
RAM清除功能
中斷輸出,帶6個獨立的可屏蔽中斷標志
鬧鐘可設(shè)置為每秒一次至每天一次
時鐘終止刷新周期標志
可編程方波輸出
自動電源失效檢測和切換電路
可選擇PDIP、SO或TSOP封裝(DS17285,DS17485,DS17885)
可選擇集成晶體和電池的DIP模塊封裝(DS17287,DS17487,DS17887)
可選擇工業(yè)級溫度范圍
通過UL認證
三、主要功能與特點
1. 實時時鐘功能
DS17887能夠精確計時,包括秒、分、時、日、月、年,并且具有閏年補償功能,其計時算法的有效期至2100年。這確保了時鐘在長時間運行中的準確性。
2. 多電源支持
DS17887支持+3V或+5V的工作電壓,使其能夠兼容多種不同的電源系統(tǒng)。此外,它還具備電源控制電路,允許系統(tǒng)通過外部激勵(如鍵盤輸入或時間和日期報警)來開啟電源。
3. 非易失性存儲器
該模塊內(nèi)置了114字節(jié)的用戶NV RAM以及額外的8kB NV RAM,用于存儲關(guān)鍵數(shù)據(jù)。這些數(shù)據(jù)在主電源掉電時仍能保持不變,確保了數(shù)據(jù)的完整性和可靠性。
4. 增強特性
DS17887還具備多種增強特性,如64位硅序列號、SMI恢復堆棧、世紀寄存器、日期報警寄存器等。這些特性使得DS17887在復雜的應(yīng)用場景中能夠發(fā)揮更大的作用。
5. 靈活的時間格式
DS17887支持12小時或24小時的時間格式,并且在12小時模式下還具備AM/PM指示功能。這為用戶提供了更加靈活的時間顯示方式。
6. 精確的溫度補償
模塊內(nèi)部集成了精確的溫度補償電路,能夠監(jiān)控VCC的狀態(tài)。一旦檢測到主電源失效,DS17887會自動切換到備用電源(如鋰電池),確保時鐘和數(shù)據(jù)的持續(xù)運行。
四、引腳分配與功能描述
DS17887采用24引腳DIP封裝,其引腳分配如下:
引腳號 | 引腳名稱 | 功能描述 |
---|---|---|
1 | PWR | 電源輸出引腳,用于觸發(fā)外部電源開啟 |
2 | X1 | 晶振輸入引腳 |
3 | X2 | 晶振輸出引腳 |
4-11 | AD0-AD7 | 復用的地址/數(shù)據(jù)總線引腳 |
12 | GND | 地引腳 |
13 | VCC | 主電源輸入引腳(+3V或+5V) |
14 | SQW | 方波輸出引腳,提供32kHz的方波信號 |
15 | VBAUX | 輔助電池輸入引腳,用于驅(qū)動輔助功能 |
16 | RCLR | RAM清零輸入引腳,用于清除RAM中的數(shù)據(jù) |
17 | VBAT | 電池輸入引腳,連接鋰電池以維持時鐘和數(shù)據(jù)運行 |
18 | IRQ | 中斷請求輸出引腳,低電平有效 |
19 | KS | Kickstart輸入引腳,用于初始化時鐘 |
20 | RD | 讀數(shù)據(jù)選通引腳,低電平有效 |
21 | GND | 地引腳 |
22 | WR | 寫數(shù)據(jù)選通引腳,低電平有效 |
23 | ALE | 地址選通輸入引腳,高電平有效 |
24 | CS | 片選輸入引腳,低電平有效 |
五、工作原理
DS17887的工作原理主要基于其內(nèi)部的實時時鐘電路、電源控制電路以及非易失性存儲器。以下是對其工作原理的詳細介紹:
1. 實時時鐘電路
DS17887內(nèi)部的實時時鐘電路由石英晶體振蕩器、分頻器、計數(shù)器以及校準電路等組成。石英晶體振蕩器產(chǎn)生穩(wěn)定的振蕩信號,經(jīng)過分頻器分頻后得到秒、分、時等時間單位。計數(shù)器則對這些時間單位進行計數(shù),從而得到當前的時間。校準電路用于對時鐘進行校準,確保時鐘的準確性。
2. 電源控制電路
電源控制電路負責監(jiān)測主電源和備用電源的狀態(tài),并根據(jù)需要切換電源。當主電源正常時,電源控制電路將主電源提供給模塊內(nèi)部的各個電路。當主電源失效時,電源控制電路會自動切換到備用電源(如鋰電池),確保時鐘和數(shù)據(jù)的持續(xù)運行。
3. 非易失性存儲器
非易失性存儲器用于存儲關(guān)鍵數(shù)據(jù),如時間、日期、報警設(shè)置等。這些數(shù)據(jù)在主電源掉電時仍能保持不變,因為非易失性存儲器具有掉電保持功能。當主電源恢復時,這些數(shù)據(jù)可以被重新讀取并使用。
六、應(yīng)用實例
DS17887因其強大的功能和可靠性而被廣泛應(yīng)用于各種領(lǐng)域。以下是一些典型的應(yīng)用實例:
1. 工業(yè)控制
在工業(yè)控制系統(tǒng)中,DS17887可以用于記錄設(shè)備的工作時間、故障時間等關(guān)鍵信息。這些信息對于設(shè)備的維護和管理至關(guān)重要。同時,DS17887的電源控制電路還可以實現(xiàn)設(shè)備的遠程喚醒功能,提高系統(tǒng)的靈活性和可靠性。
2. 醫(yī)療設(shè)備
在醫(yī)療設(shè)備中,DS17887可以用于記錄患者的治療時間、用藥時間等關(guān)鍵信息。這些信息對于醫(yī)生的治療決策和患者的康復至關(guān)重要。此外,DS17887的高精度時鐘還可以確保醫(yī)療設(shè)備的精確運行。
3. 網(wǎng)絡(luò)接入設(shè)備
在網(wǎng)絡(luò)接入設(shè)備中,DS17887可以用于記錄設(shè)備的上線時間、下線時間等關(guān)鍵信息。這些信息對于網(wǎng)絡(luò)管理員的網(wǎng)絡(luò)管理和優(yōu)化至關(guān)重要。同時,DS17887的實時時鐘功能還可以確保網(wǎng)絡(luò)接入設(shè)備的精確同步。
4. 筆記本電腦
在筆記本電腦中,DS17887可以用于記錄系統(tǒng)的啟動時間、關(guān)機時間等關(guān)鍵信息。這些信息對于用戶了解系統(tǒng)的使用情況以及進行系統(tǒng)維護至關(guān)重要。此外,DS17887的電源控制電路還可以實現(xiàn)筆記本電腦的定時開關(guān)機功能,提高用戶的使用體驗。
七、驅(qū)動開發(fā)
為了使用DS17887實時時鐘模塊,需要開發(fā)相應(yīng)的驅(qū)動程序。以下是一個基于C語言的DS17887驅(qū)動開發(fā)示例:
#include <stdint.h> #include <stdbool.h>
// 定義DS17887對象類型 typedef struct Ds17887Object { uint8_t ctlReg[4]; // 控制寄存器 uint16_t dateTime[6]; // 讀取的系統(tǒng)時間 void (*SetCtlPin[6])(bool value); // 控制引腳操作 void (*WriteByte)(uint16_t data); // 寫一個字節(jié) uint16_t (*ReadByte)(void); // 讀一個字節(jié) void (*SetBusDirection)(bool direction); // 設(shè)置總線方向 void (*Delayus)(volatile uint32_t nTime); // 延時操作 } Ds17887ObjectType;
// 初始化DS17887對象 void InitDs17887(Ds17887ObjectType *ds17887) { // 初始化控制寄存器 for (int i = 0; i < 4; i++) { ds17887->ctlReg[i] = 0; } // 初始化系統(tǒng)時間 for (int i = 0; i < 6; i++) { ds17887->dateTime[i] = 0; } // 初始化控制引腳操作函數(shù)指針 for (int i = 0; i < 6; i++) { ds17887->SetCtlPin[i] = NULL; } // 初始化讀寫字節(jié)函數(shù)指針 ds17887->WriteByte = NULL; ds17887->ReadByte = NULL; // 初始化設(shè)置總線方向函數(shù)指針 ds17887->SetBusDirection = NULL; // 初始化延時操作函數(shù)指針 ds17887->Delayus = NULL; }
// 從DS17887讀數(shù)據(jù) static uint16_t ReadDataFromDS17887(Ds17887ObjectType *ds17887, uint16_t address) { // 將片選信號置位,失能片選 ds17887->SetCtlPin[DS17887_CS](true); // 將RD與WR置位 ds17887->SetCtlPin[DS17887_WR](true); ds17887->SetCtlPin[DS17887_RD](true); ds17887->Delayus(2); // 置位ALE ds17887->SetCtlPin[DS17887_ALE](true); // 將地址數(shù)據(jù)總線的模式改為輸出 ds17887->SetBusDirection(true); // 寫寄存器地址 ds17887->WriteByte(address); // 將片選信號置位,使能片選 ds17887->SetCtlPin[DS17887_CS](false); ds17887->Delayus(2); // 復位ALE ds17887->SetCtlPin[DS17887_ALE](false); ds17887->Delayus(2); // 復位RD ds17887->SetCtlPin[DS17887_RD](false); ds17887->Delayus(10); // 將地址數(shù)據(jù)總線的模式改為輸入 ds17887->SetBusDirection(false); ds17887->Delayus(40); // 讀取數(shù)據(jù) uint16_t readData = 0; readData = ds17887->ReadByte(); ds17887->Delayus(4); // 將RD置位,并將CS信號置位,失能芯片 ds17887->SetCtlPin[DS17887_RD](true); ds17887->SetCtlPin[DS17887_CS](true); ds17887->Delayus(4); return readData; }
// 向DS17887寫數(shù)據(jù) static void WriteDataToDS17887(Ds17887ObjectType *ds17887, uint16_t address, uint16_t data) { // 將片選信號置位,失能片選 ds17887->SetCtlPin[DS17887_CS](true); // 將RD與WR置位 ds17887->SetCtlPin[DS17887_WR](true); ds17887->SetCtlPin[DS17887_RD](true); ds17887->Delayus(2); // 置位ALE ds17887->SetCtlPin[DS17887_ALE](true); // 將地址數(shù)據(jù)總線的模式改為輸出 ds17887->SetBusDirection(true); // 寫寄存器地址 ds17887->WriteByte(address); // 將片選信號置位,使能片選 ds17887->SetCtlPin[DS17887_CS](false); ds17887->Delayus(2); // 復位ALE ds17887->SetCtlPin[DS17887_ALE](false); ds17887->Delayus(2); // 寫數(shù)據(jù) ds17887->WriteByte(data); ds17887->Delayus(40); // 將WR置位 ds17887->SetCtlPin[DS17887_WR](true); ds17887->Delayus(4); // 將CS信號置位,失能芯片 ds17887->SetCtlPin[DS17887_CS](true); ds17887->Delayus(4); }
// 獲取當前時間 void GetCurrentTime(Ds17887ObjectType *ds17887) { // 讀取時間寄存器 for (int i = 0; i < 6; i++) { ds17887->dateTime[i] = ReadDataFromDS17887(ds17887, TIME_REGISTER_BASE + i); } }
// 設(shè)置當前時間 void SetCurrentTime(Ds17887ObjectType *ds17887, uint16_t *timeData) { // 寫入時間寄存器 for (int i = 0; i < 6; i++) { WriteDataToDS17887(ds17887, TIME_REGISTER_BASE + i, timeData[i]); } }
八、總結(jié)
DS17887是一款功能強大、性能可靠的3V/5V實時時鐘模塊。它集成了實時時鐘功能、非易失性存儲器、電源控制電路以及多種增強特性,能夠滿足各種復雜應(yīng)用場景的需求。通過開發(fā)相應(yīng)的驅(qū)動程序,可以方便地實現(xiàn)對DS17887的控制和數(shù)據(jù)讀寫操作。在未來的發(fā)展中,隨著物聯(lián)網(wǎng)、智能家居等領(lǐng)域的不斷興起,DS17887等實時時鐘模塊的應(yīng)用前景將更加廣闊。
責任編輯:David
【免責聲明】
1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對本文的引用持有異議,請聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業(yè)目的。
3、本文內(nèi)容僅代表作者觀點,拍明芯城不對內(nèi)容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關(guān)結(jié)果。
4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責任的權(quán)利。
拍明芯城擁有對此聲明的最終解釋權(quán)。