I2C串行芯片X1288及其在電子電能表中的應用
1 引言
X1288是美國Xicor公司生產的一種集E2PROM、實時時鐘、日歷、CPU監控和兩路報警于一體的多功能集成電路芯片。X1288的時鐘采用一種價格低廉的32.768kHz晶振,具有百分秒、秒、分、時、日、月、年及星期信息,并可設定兩個報警時間,其時鐘和報警寄存器的雙通道結構使得它能在讀寫數據時仍保持時鐘的準確性。此外,X1288還可提供32k字節的E2PROM陣列,并具有電源和CPU監控功能。
X1288串行芯片一般采用I2C總線來實現與主控制器的數據交換。I2C是由Philips公司開發的一種用于內部IC控制的雙向二線串行總線,通過該總線可很好地解決現代電子系統中眾多IC之間,及IC與外界的通信需要,并可大大簡化電路設計,提高硬件電路的工作效率。
2 X1288的引腳定義
X1288芯片具有16腳SOIC或14腳TSSOP小體積封裝形式。圖1為14腳TSSOP封裝的引腳示意圖,各引腳的定義如下:
X1、X2:這兩個引腳可分別用作片內振蕩器的反相放大器的輸入和輸出端。應用時需外接一個32.768kHz的石英晶體,其作用是為系統時鐘/振蕩器提供時間基準。
RESET:復位信號輸出端。當看門狗超時或電壓跌落到固定的VTRIP門限時,此引腳將向主處理器發送一個低電平有效的漏極開路輸出信號,以使電路系統快速復位。
SDA:串行數據端,為漏極開路輸出的雙向引腳,用于數據的輸入輸出。實際應用時需接上拉電阻,并應與其它漏極或集電極開路輸出端線相或。該端的輸入緩沖器總是處于激活狀態,輸出電路可通過一個斜率控制的下拉控制輸出信號的下降時間。設計時通常把電路設計成400kHz的二線接口。
SCL:串行時鐘端口。
PHZ/IRQ:可編程頻率/中斷輸出端。當編程為頻率輸出時,該端接到內部振蕩器的輸出腳,以輸出頻率為32.768kHz、4096Hz或1Hz的信號,也可以無信號輸出。當編程為中斷輸出時,該端可在報警發生時激活,以向主機請求中斷。
VBACK:備用電源輸入端。當VCC小于VBACK-0.2V時,電源控制電路將切換至VBACK供電;而當VCC超過VBACK時,又會自動切回VCC供電方式,圖2所示是其電源控制過程示意圖。
{{分頁}}
3 X1288的主要寄存器及其功能
X1228中的時鐘/控制寄存器(CCR)位于從E2PROM陣列中分離出來的一個區域,地址位于[000]0h~[003]Fh之間。CCR一般被分成5段,可分別用于狀態寄存器(1字節)、實時時鐘(8字節)、控制寄存器(4字節)、報警寄存器1和報警寄存器0(各8字節)。
3.1 狀態寄存器(SR)
狀態寄存器是易失性的,其地址是003Fh。表1所列是其命令格式,各命令字的具體含義如下:
表1 狀態寄存器(SR)
地址 | 名稱 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 缺省值 |
003Fh | SR | BAT | AL1 | AL0 | 0 | 0 | RWEL | WEL | RTCF | 01h |
BAT:后備電源標志位。當BAT為“1”時,表明器件在使用后備電源。
AL1、AL0:報警選擇位。X1288中有兩個報警寄存器,若其中的某一報警時間與實時時鐘相同時,相應的AL1或AL0位將變為“1”;當讀取SR的值后,該位又變為“0”。
RWEL:時鐘/控制寄存器(CCR)寫入控制位。對CCR進行寫操作時,必須先使該位為“1”。
WEL:CCR和E2PROM的寫入控制位。在對CCR和E2PROM進行寫操作時,必須先使該位為“1”。同理,如果要寫入時鐘和控制寄存器,也必須先寫“02h”至SR(使RWEL為“1”),再寫“06h” (使WEL為“1”)。
RTCF:掉電標志位。當全部電源(包括VCC和VBACK)失效后,該位變為 “1”;而在系統再次上電后,如果要對RTC進行第一次有效寫操作,則應首先將使該位為“0”。
需要說明的是,雖然SR中的第3、4位沒有使用,但這些位必須置“0”。
3.2 實時時鐘(RTC)
實時時鐘寄存器的地址0030h~0037h分別對應秒、分、時、日、月、年、星期和百分秒,并采用BCD碼表示。通過啟動一條讀命令并確定相應的地址,即可讀取時間信息。因為時鐘是連續運行的,而每次讀操作都需要一定的時間,這就有可能在讀操作過程中使時間發生改變。本器件是由讀命令將時間鎖存在分立的鎖存器中,因而可以避免讀操作過程中時間發生變化。當一次讀出并不是由讀操作引起時,系統將發出報警。
可以通過向RTC寄存器中寫入數據來設定時間和日期。通過一次不完全連續的寫操作可避免改變當前時間,在RTC數據輸入字節之前的ACK位時,時鐘的下降沿會將當前的時間值裝載到分立的緩沖器中,以使時鐘繼續運行。而此時新的串行輸入數據將取代緩沖器的值。當有效的寫操作結束后,系統產生停止位時,這個新值才被裝載到RTC寄存器中。向RTC寫入單個字節并不對其它字節的數據產生影響。
當X1288在VCC和VBACK都失效以后,即使再次上電后,其時鐘也將停止增加,直到在時鐘寄存器中進行至少一個字節的寫操作以后。
讀出和設定時鐘應注意:百分秒寄存器(SSEC)是只讀的;小時寄存器(HR)中的MIL位是12/24時制選擇位“1”為24時制,“0”為12時制,H21位是AM/PM標志位“1”代表PM,“0”代表AM;星期中的七天只用三位(DY0~2)來計數,其值在0~6之間循環,數字所代表星期中的哪一天可由設計者決定,缺省值為0。
3.3 控制寄存器
表2所示是4個控制寄存器的命令字列表,其中的DTR是數字化微調寄存器,它的作用是調整每秒的計數值和ppm誤差,以便在長時間內獲得更好的計時精度。DTR2是符號位,“1”為正補償,“0”為負補償;DTR1、DTR0可分別提供10ppm、20ppm的補償。由DTR0~DTR2三位可表示-30ppm~+30ppm的補償范圍。
表2 控制寄存器
地址 | 名稱 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 缺省值 |
0013h | DTR | 0 | 0 | 0 | 0 | 0 | DTR2 | DTR1 | DTR0 | 00h |
0012h | ATR | 0 | 0 | ATR5 | ATR4 | ATR3 | ATR2 | ATR1 | ATR0 | 00h |
0011h | INT | IM | AL1E | AL0E | FO1 | FO0 | 只讀 | 只讀 | 只讀 | 00h |
0010h | BL | BP2 | BP1 | BP0 | WD1 | WD0 | 只讀 | 只讀 | 只讀 | 00h |
ATR寄存器用來微調X1和X2之間的片內負載電容,其范圍從+116ppm~-37ppm,具體電容值的大小可由下式計算:
CART=[(ATR的十進制值)
電能表相關文章:電能表原理
評論