實時時鐘ISL1208原理與應(yīng)用
1.引言
本文引用地址:http://www.ex-cimer.com/article/172203.htmINTERSIL公司推出的ISL1208是一種I2C接口、低成本、低功耗實時時鐘,它帶有定時與晶體補償、時鐘/日歷、電源失效指示器、周期或輪詢報警、智能后備電池切換和后備電池供電的SRAM等功能。振蕩器采用外部低成本32.768KHz晶振,日歷可精確到2099 年,閏年自動修正。其強(qiáng)大的報警功能,可被設(shè)置成任意時間點報警或固定頻率輸出。若采用3.0V/3.6V鋰電池供電,供電電流僅為400nA,最多可持續(xù)供電長達(dá)10年。另外,后備電源輸入引腳Vbat還允許斷電時使用大容量后備電容供電以保證正常工作幾個月左右。
2. ISL1208簡介
ISL1208引腳如圖1所示:
其中:引腳X1、X2接外部晶振輸入端,可直接以32. 768kHz的晶體源驅(qū)動;Vbat接后備電源/電容,該引腳不用時接地;SDA為串行數(shù)據(jù)輸入輸出端;SCL為串行時鐘輸入端;IRQ/Fout為中斷 /頻率輸出端,可用作中斷/頻率輸出;Vdd和GND為電源和接地端。
3. ISL1208內(nèi)部結(jié)構(gòu)及其工作原理
ISL1208內(nèi)部結(jié)構(gòu)框圖如圖2。由圖可知,ISL1208主要包括:I2C接口控制單元、實時時鐘控制邏輯、時鐘分頻器、電源管理單元和寄存器單元。其中寄存器單元被分成四段:實時時鐘、控制與狀態(tài)、報警寄存器和用戶SRAM;這四段寄存器各自含有不同的功能:實時時鐘和報警寄存器用于寫入/讀出時間值和報警值,其寫入形式為BCD碼;控制與狀態(tài)寄存器可完成對其他寄存器讀寫控制、報警與頻率輸出控制、模擬與數(shù)字微調(diào)控制等功能,其存儲映射圖如表1。
控制與狀態(tài)寄存器(Control and Status)
控制與狀態(tài)寄存器包括狀態(tài)寄存器、中斷與報警寄存器、模擬微調(diào)與數(shù)字微調(diào)寄存器。
狀態(tài)寄存器(SR):用來控制RTC失效、電池模式、報警觸發(fā)、時鐘計數(shù)器寫保護(hù)、晶體振蕩器使能以及狀態(tài)位的自動復(fù)位或者提供相應(yīng)的狀態(tài)信息。在時鐘上電時,需將寫RTC使能位WRTC置“1”,以便啟動時鐘計數(shù)。
中斷控制寄存器(INT):主要用于控制時鐘的周期性和單事件報警。其中頻率輸出控制位FO3-FO0使能/禁止頻率輸出功能,并選擇IRQ/FOUT引腳的輸出頻率(2-5Hz-215Hz)。在頻率模式被激活時它將覆蓋IRQ/FOUT引腳上的報警模式。報警使能位ALME使能/禁止報警功能,中斷/報警模式位IM使能單周期定時事件(IM=0)/周期定時事件(IM=1)。
模擬微調(diào)寄存器(ATR):ATR0至ATR5為六位模擬微調(diào)位,可調(diào)整片內(nèi)負(fù)載電容(CX1、CX2)的值,這一電容值用于RTC的頻率補償,其每一位都有不同的電容調(diào)節(jié)比重。有效的片內(nèi)串聯(lián)負(fù)載電容CLOAD 的范圍從4.5pF至20.25pF,中間值為12.5pF(默認(rèn))。CLOAD可通過X1/X2引腳之間兩個數(shù)字控制電容器CX1和CX2調(diào)節(jié)。
數(shù)字微調(diào)寄存器(DTR):數(shù)字微調(diào)位DTR0、DTR1和DTR2用來調(diào)整每秒鐘的平均計數(shù)值和平均誤差以獲取更好的精度。其中DTR2為符號位(DTR2=0頻率補償>0,DTR2=1頻率補償0),DTR1和DTR0為刻度位:DTR1提供40ppm 調(diào)整,DTR0提供20ppm調(diào)整。用以上三位可以表示-60ppm至+60ppm的補償范圍。
4. 應(yīng)用舉例
4.1 硬件結(jié)構(gòu)
ISL1208具有I2C接口,使其便于與各類處理器連接且硬件結(jié)構(gòu)十分簡單,傳輸速率最高可達(dá)400Hz。硬件結(jié)構(gòu)如圖 3。其中時鐘輸入口SCL、數(shù)據(jù)輸入輸出口SDA分別與AT89C51的P1.6、P1.7腿相連,中斷輸出口IRQ/Fout接外部中斷INT0。 AT89C51通過RS232口與計算機(jī)相連,通過計算機(jī)對實時時鐘產(chǎn)生控制。Vbat引腳接后備電容器。
4.2 軟件設(shè)計
由于ISL1208為I2C接口,因此其接口協(xié)議也滿足I2C規(guī)范,這里不再累述。需要提到一點是:在每次訪問寄存器時,應(yīng)先輸入一個有效的辨識字節(jié)。該字節(jié)高7位(1101111)為器件辨識符。辨識字節(jié)的最后一位定義進(jìn)行讀/寫操作,當(dāng)其為“1”時選擇讀,為“0”時選擇寫。圖4為ISL1208讀/寫時序圖。
對于ISL1208來說,由于其內(nèi)部結(jié)構(gòu)設(shè)計,可以很容易的實現(xiàn)2nHz中斷輸出和每分、每天至每年一次報警,但要求具體幾分鐘、幾小時報警一次還需在程序的編制上要比較注意。以下程序為通過計算機(jī)、單片機(jī)來控制ISL1208每5秒鐘產(chǎn)生一次中斷程序,上位機(jī)程序由MATLAB編寫[4],單片機(jī)程序由C語言編寫,由于篇幅有限僅列出部分單片機(jī)程序:
分頻器相關(guān)文章:分頻器原理
評論