實(shí)時(shí)時(shí)鐘電路在以單片機為核心構成的智能儀器儀表、測控系統、工業(yè)控制等領(lǐng)域有著(zhù)廣泛的應用,但現有的時(shí)鐘電路存在著(zhù)外圍電路(如需外接晶振、電池)和接口電路(并行接口)復雜、功能單一等缺點(diǎn)。SD2001E則是在內部集成了實(shí)時(shí)時(shí)鐘電路、串行非易失性SRAM、可充電電池、晶振及電池管理電路的新型實(shí)時(shí)時(shí)鐘芯片。該芯片與單片機的接口電路采用工業(yè)標準I2C總線(xiàn),從而簡(jiǎn)化了接口電路設計。利用該芯片無(wú)需擴展任何外圍元件,即可構成一個(gè)高精度實(shí)時(shí)時(shí)鐘及具有256Kb非易失性SRAM的數據存儲電路。 1 主要特性及引腳說(shuō)明 SD2001E時(shí)鐘芯片的主要特性如下: *年、月、日、星期、時(shí)、分、秒的BCD碼輸入/輸出; *I2C總線(xiàn)接口(包括實(shí)時(shí)時(shí)鐘部分和SRAM部分); *自動(dòng)日歷到2099年(包括閏年自動(dòng)換算功能); *內置晶振,出廠(chǎng)前已對時(shí)鐘進(jìn)行校準,保證精度為±4×10 -6,即時(shí)鐘年誤差小于2min; *低功耗,典型值為1.0μA(VDD=3.5V); *工作電壓為3.0~5.5V(其中NVRAM在 4.5~5.5V工作); *可設置的兩路鬧鐘輸出及32 768Hz~1Hz的方波信號輸出; *可設置的每分鐘固定中斷輸出或選定頻率固定中斷輸出; *內置充電電路和充電電池,充滿(mǎn)一次可保持內部時(shí)鐘走時(shí)時(shí)間超過(guò)1年以上,可滿(mǎn)充電次數達200次; *內置電源管理電路,當VDD≥3.0V,內部電池不耗電; *內置穩定電路及電池掉電檢測電路; *內置256Kb的非易失性SRAM,其擦寫(xiě)次數為100 億次,且沒(méi)有內部寫(xiě)延時(shí)。 SD2001E采用24腳DIP封裝形式。各引腳的功能如表1所列,其外形及引腳排列如圖1所示。 ![]() 表1 SD2001E引腳說(shuō)明
2 工作原理 SD2001E內部包括實(shí)時(shí)時(shí)鐘與NVRAM兩部分,內部原理框圖如圖2所示。 ![]() 2.1 實(shí)時(shí)時(shí)鐘 SD2001E實(shí)時(shí)時(shí)鐘是基于I2C總線(xiàn)的器件,故對該器件的操作必須嚴格遵守總線(xiàn)時(shí)序。當CPU發(fā)出起始條件,建立與實(shí)時(shí)時(shí)鐘連接后,CPU通過(guò)SDA總線(xiàn)連續輸出4位器件地址、3位操作指令和1位讀/寫(xiě)指令,其格式如下:
實(shí)時(shí)時(shí)鐘器件的地址固定為“0110”,接下來(lái)的3位操作指令構成了對實(shí)時(shí)時(shí)鐘部分的8條操作指令,具體指令含義如表2所列。 表2 SD2001E實(shí)時(shí)時(shí)鐘指令表
CPU通過(guò)發(fā)送不同操作指令,選擇相應的寄存器從而完成相應的操作功能。SD2001E實(shí)時(shí)時(shí)鐘部分共包括4個(gè)寄存器,分別分別如下: (1)實(shí)時(shí)數據寄存器 實(shí)時(shí)數據寄存器是一個(gè)56位的存儲器。它以BCD碼方式存儲,包括年、月、日、星期、時(shí)、分、秒的數據,數據格式如圖3所示。任何讀/寫(xiě)操作或實(shí)時(shí)數據存取命令都通過(guò)發(fā)送或接收年數據的第一位“LBS”執行的。 ![]() *年數據(00~99):設置最后兩位數字(00~99),通過(guò)自動(dòng)日歷功能計至2099年。 *月數據(01~12):每月包含天數通過(guò)自動(dòng)日歷功能來(lái)更改。1、3、5、7、8、10、12為1~31;4、6、9、11為1~30;2(閏年)為1~29;2(普通)為1~28。 *天數(01~31)。 *星期數據(00~06):七進(jìn)制計數器,對應于星期內每一天來(lái)設置。 *小時(shí)數據(00~23或00~11):12小時(shí)進(jìn)制,0 為AM,1為PM;對于24小時(shí)進(jìn)制,這一位沒(méi)有意義,但必須設置為“0”或“1”。 *分數據(00~59)。 *秒數據(00~59)與測試標志。 *TEST:在測試模式變?yōu)椤?”。 (2)狀態(tài)寄存器 狀態(tài)寄存器是一個(gè)8位寄存器。該寄存器用來(lái)顯示和設置實(shí)時(shí)時(shí)鐘的工作模式,狀態(tài)寄存器格式如下。 ![]() Power:電源標志位,為只讀位。 12/24:設置12小時(shí)制或24小時(shí)制:0為12小時(shí)制;1為24小時(shí)制。 INT1AE:設置從INT1腳輸出的報警中斷的狀態(tài)。設定報警時(shí)間并設此位為“1”時(shí)INT1寄存器開(kāi)始有效,0:報警中斷輸出禁止;1:報警中斷輸出允許。 INT1ME:確定INT1腳的輸出為每分鐘邊沿中斷或每分鐘固定中斷。為了設為每分鐘固定中斷輸出,應將INT1ME和INT1FE置1。0:報警中斷或可選的頻率的固定中斷輸出;1:每分鐘邊沿中斷或每分鐘固定中斷輸出。 INT1FE:設定INT1腳的輸出為每分鐘固定中斷(周期1分鐘,占空比50%)或選定頻率的固定中斷。如果選定頻率固定中斷輸出被允許時(shí),INT1寄存器被認為是頻率/事件的數據,0:報警中斷或每分鐘邊沿中斷輸出;1:每分鐘固定中斷輸出或選定頻率固定中斷輸出。 INT2AE、INT2ME、INT2FE位用于設置從 INT2腳輸出的報警中斷的狀態(tài),各位含義同上。 (3)兩組報警時(shí)間/頻率事件設置寄存器 有兩組16位報警時(shí)間/頻率事件設置寄存器,用于設置報警時(shí)間或頻率事件,由INTxAE與INTxFE控制。設定的AM/PM標志位必須同12小時(shí)制或24小時(shí)制相對應,否則,設定的小時(shí)數將與報警數據不匹配。該寄存器為只寫(xiě)寄存器(x:1或2)。 INTxAE=1時(shí),INT1和INT2寄存器被認為是報警時(shí)間數據,與實(shí)時(shí)數據寄存器中小時(shí)和分鐘寄存器設置相同。它們用BCD碼代表小時(shí)與分鐘。INT1寄存器內容如圖4(a)所示。 INTxFE=1時(shí),INT1與INT2寄存器被視為是頻率事件數據(f0~f15位對應頻率為32 768~1Hz),對相應位置“1”,則對應頻率以“與”的方式輸出。INT1寄存器內容如圖4(b)所示。 ![]() 2.2 非易失數據寄存器 SD2001E內部還具有256Kb的非易失性數據寄存器。該存儲器是一種性能優(yōu)良的可擦寫(xiě)100億次且無(wú)內部寫(xiě)延時(shí)的數據存儲器,可用于保存系統設置參數及采集的數據。 NVRAM的操作方式如下:首先,CPU發(fā)出開(kāi)始信號給 SD2001E,然后CPU發(fā)出包括4位控制代碼,1位讀/寫(xiě)指令的8位數據,即“從器件地址”,前4位稱(chēng)為“SRAM器件代碼”,固定為“1010”。接下來(lái)的3位在這里固定為“000”,從器件地址的最低位為讀寫(xiě)控制位,該位為“1”表示對從器件進(jìn)行讀操作,為“0”表示對從器件進(jìn)行寫(xiě)操作,接下來(lái)就可對SD2001E進(jìn)行讀寫(xiě)操作。寫(xiě)操作可分為單字節寫(xiě)操作和連續寫(xiě)操作。讀操作有三種操作方式:立即地址讀操作、同地址讀操作、連續讀操作。其操作過(guò)程和操作時(shí)序與I2C總線(xiàn)SRAM的讀寫(xiě)操作相同,這里不再詳述。 3 SD2001E在嵌入式系統中的應用 SD2001E可廣泛應用于智能儀器儀表系統、水/電/氣表等IC卡應用系統、數據采集系統、工業(yè)控制系統、測控系統、門(mén)禁系統、家用電器等嵌入式應用領(lǐng)域。利用SD2001E可為系統提供以下功能。 (1)實(shí)時(shí)時(shí)鐘日歷 SD2001E可為系統提供高精度的時(shí)鐘及日歷功能,以滿(mǎn)足具有定時(shí)數據采集、輸出控制、數據保存及定時(shí)報警等功能的嵌入式系統需要,同時(shí)也可為系統提供時(shí)間及日期顯示功能。 (2)數據保存 嵌入式系統一般均需要涉及到系統設置參數及采集數據保存的問(wèn)題。通常的做法是,通過(guò)擴展1片E2PROM芯片來(lái)保存設置參數及采集的數據,但E2PROM存在擦寫(xiě)壽命有限及數據存儲的可靠性不高等問(wèn)題;而利用 SD2001E片內32KB、擦寫(xiě)數為100億次的高性能NVRAM,則幾乎不用考慮存儲器的擦寫(xiě)壽命及數據存儲的可靠性問(wèn)題。因而,SD2001E為需頻繁讀寫(xiě)數據的應用領(lǐng)域提供了很好的解決方案。 (3)頻率輸出 對于需要固定頻率輸出或需要以ms或s為單位的定時(shí)應用領(lǐng)域,可以通過(guò)設置頻率事件數據給INT1寄存器,并置INT1ME位為“0”和INT1FE位為“1”。此時(shí),從INT1引腳將輸出頻率為32 768Hz~1Hz的固定頻率,利用單片機的計數器或中斷次數軟件計數的方法可得到以ms或s為單位的任意時(shí)間輸出。 (4)定時(shí)輸出 當系統需要以分鐘為基本單位的定時(shí)輸出時(shí)(如采集周期固定的多路數據采集、巡回檢測系統等),可將SD2001E狀態(tài)寄存器的INT1ME位置為“1”,INT1FE位置為“0”,以選擇為每分鐘邊沿中斷輸出或將INT1ME、INT1FE位同時(shí)置“1”選擇為每分鐘固定中斷輸出。通過(guò)單片機的計數器或中斷次數軟件計數的方法,可得到以min為單位的任意時(shí)間輸出。 (5)定時(shí)報警 對于具有定時(shí)報警輸出要求的系統,可通過(guò)SD2001E的 INT1寄存器來(lái)設置報警時(shí)間(小時(shí)和分鐘數據),并將狀態(tài)寄存器中的INT1AE位置為“1”、INT1ME位及INT1FE位置為“0”來(lái)實(shí)現。需要指出的是SD2001E定時(shí)報警中斷為每天一或二次。對于需要用到長(cháng)時(shí)間定時(shí)的報警系統,如每月或每年一次的報警系統,可通過(guò)軟件編程的方法設定報警中斷的時(shí)間。 4 具體應用與軟件編程 下面以AT89C52單片機為例,給出SD2001E與單片機的典型接口電路。由于A(yíng)T89C52單片機沒(méi)有I2C總線(xiàn)接口,故這里使用AT89C52的P3.3、P3.4口線(xiàn),來(lái)模擬I2C總線(xiàn),其中SDA與 P3.4相連,SCL與P3.3相連。SD2001E內部SRAM的I2C總線(xiàn)接口SDAE與SDA并聯(lián),SCLE與SCL并聯(lián)。此外,為了實(shí)現定時(shí)報警中斷輸出的功能,還將SD2001E INT1端與單片機的INT0外中斷端相連,具體的硬件連接電路如圖5所示。網(wǎng)絡(luò )補充版(http://www.dpj.com.cn)給出與上述硬件電路對應的子程序,包括SD2001E初始化子程序,實(shí)時(shí)時(shí)鐘數據讀、寫(xiě)子程序與INT1中斷輸出子程序。程序采用模擬I2C總線(xiàn)軟件包編制。 由于SD2001E高精度時(shí)鐘日歷芯片將可充電池、晶振充電電路及256Kb的NVRAM集成在了一起,又采用了簡(jiǎn)單的I2C總線(xiàn)接口,因而該器件無(wú)需擴展任何外圍元件就可構成一個(gè)功能完善的時(shí)鐘日歷電路,同時(shí)又可為系統提供一個(gè)容量為32KB的高性能非易失性數據存儲單元,故該器件是嵌入式系統時(shí)鐘電路的良好選擇。 參考文獻 1. 何立民 I2C 總線(xiàn)應用設計 2. 孟臣.李敏 高性能鐵電存儲器FM24C256及其在單片機中的應用 [期刊論文] -電子技術(shù)2003(1) 作 者:黑龍江八一農墾大學(xué) 李敏 孟臣 來(lái) 源:?jiǎn)纹瑱C與嵌入式系統應用2003(10) |