基于實(shí)時(shí)時(shí)鐘芯片X1227的電源控制器設計
關(guān)鍵詞:實(shí)時(shí)時(shí)鐘 I2C接口 單片機 電源控制器
引言
X1228是美國XICOR公司最新推出的實(shí)時(shí)時(shí)鐘(RTC)芯片。與其它RTC芯片相比,X1228除有基本的時(shí)鐘和報警功能外,還有4K位E2PROM存儲器和復位輸出、電壓監控、看門(mén)狗定時(shí)、頻率輸出等功能。
X1228可以準確地用秒、分、時(shí)、日、星期、月、年來(lái)顯示時(shí)間和日期,具有世紀字節,解決了兩千年問(wèn)題,自動(dòng)實(shí)現閏年調整;有2路報警,可設置為按秒、分、時(shí)、日、月和星期任意組合的定時(shí)報警;還有1個(gè)可編程的頻率輸出引腳(PHZ),用于輸出一個(gè)固定頻率的方波信號;內部的4K位E2PROM存儲器,可用于存儲用戶(hù)的設置參數或其它數據,其內容在電源失效時(shí)不會(huì )丟失;采用I2C總線(xiàn)與單片機接口,一次可傳送多個(gè)字節的數據,數據傳送的速率為400kHz;內部有電源監控電源監控電路,用于監測電源電壓,并能在上電和掉電時(shí)輸出復位信號,片內的看門(mén)狗定時(shí)器可編程為3個(gè)超時(shí)時(shí)間和關(guān)閉,還提供一個(gè)備用電源輸入引腳(VBACK),接一電池作為備用電源,可在主電源(VCC)失效時(shí)保證芯片正常工作和時(shí)鐘的連續運行。X1228因其計時(shí)準確、體積小、功能強,且與單片機接口方便、性?xún)r(jià)比高,在我們研制的開(kāi)放式實(shí)驗室管理系統電源控制器中得到了有效的應用。
圖1 X1228內部結構框圖
1 X1228的內部結構及工作原理
實(shí)時(shí)時(shí)鐘芯片X1228的內部結構如圖1所示,按功能基本分為實(shí)時(shí)時(shí)鐘及報警、存儲器和復位監控電路3個(gè)主要部分。
1.1 實(shí)時(shí)時(shí)鐘及報警
X1228對時(shí)鐘和報警的訪(fǎng)問(wèn)和設置都是通過(guò)時(shí)鐘/控制寄存器CCR來(lái)實(shí)現的。CCR分為五個(gè)部分:
①報警寄存器0(Alarm 0)為8字節,地址0000H~0007H,非易失性E2PROM存儲器;
②報警寄存器1(Alarm 1)為8字節,地址0008~000FH,非易失性E2PROM存儲器;
③控制寄存器(Control)為4字節,地址0010H~0013H,非易失性E2PROM存儲器;
④實(shí)時(shí)時(shí)鐘(RTC)為8字節,地址0030H~0037H,易失性RAM存儲器;
⑤狀態(tài)寄存器(Status)為1字節,地址為003FH,易失性RAM存儲器。
實(shí)時(shí)時(shí)鐘(RTC)外部?jì)H使用1個(gè)32.768kHz晶體來(lái)保持年、月、星期、日、時(shí)、分和秒的精確的內部表示。啟動(dòng)讀命令并指定對應于RTC寄存器的地址可以讀RTC,也可以通過(guò)寫(xiě)RTC寄存器來(lái)設置時(shí)間和日期。模擬微調寄存器ATR(低6位)用來(lái)調整X1和X2引腳間的片內負載電容,為5~39.5pF,這將使晶體選擇有較大的余地。數字微調寄存器DTR(低3位)用來(lái)調整RTC的誤差,達到長(cháng)時(shí)間的高精度。
兩組報警寄存器的結構與內容和RTC寄存器相同,只是增加了使能位(在MSB位)。通過(guò)使能位和實(shí)時(shí)寄存器的設置,可以確定報警時(shí)間。例如:在表1中,通過(guò)把EDWn、EHRn、EMNn使能位置“1”,并把DWAn、HRAn、MNAn報警警察寄存器置為星期三8:00AM,即把X1228設置為每星期三8:00AM報警。當把EHRn、EMNn使能位置“1”,并把HRAn、MNAn報警寄存器置為9:15PM時(shí),即把X1228設置為每天9:15PM報警。設置EMOn,并結合其它使能位和特定的報警時(shí)間,用戶(hù)可以把X1228設置為每年同樣的時(shí)間報警??刂萍拇嫫鱅NT中位IM為中斷方式位,“0”為中斷方式,“1”為脈沖方式;位AL1E和AL0E分別用來(lái)使能報警中斷信號IRQ的輸出;位FO1和FO0為可編程頻率輸出控制位,用來(lái)選擇PHZ引腳上的振蕩頻率輸出。
表1 時(shí)鐘/控制寄存器CCR映像表
地址 | 名稱(chēng) | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 范圍 |
003FH | SR | BAT | AL1 | AL0 | 0 | 0 | RWEL | WEL | RTCF | |
0037H | Y2K | 0 | 0 | Y2K21 | Y2K20 | Y2K13 | 0 | 0 | Y2K10 | 19/20 |
0036H | DW | 0 | 0 | 0 | 0 | 0 | DY2 | DY1 | DY0 | 0~6 |
0035H | YR | Y23 | Y22 | Y21 | Y20 | Y13 | Y12 | Y11 | Y10 | 0~99 |
0034H | MO | 0 | 0 | 0 | G20 | G3 | G12 | G11 | G10 | 1~12 |
0033H | DT | 0 | 0 | D21 | D20 | D13 | D12 | D11 | D10 | 1~31 |
0032H | HR | T24 | 0 | H21 | H20 | H13 | H12 | H11 | H10 | 0~23 |
0031H | MN | 0 | M22 | M21 | M20 | M13 | M12 | M11 | M10 | 0~59 |
0030H | SC | 0 | S22 | S21 | S20 | S13 | S12 | S11 | S10 | 0~59 |
0013H | DTR | 0 | 0 | 0 | 0 | 0 | DTR2 | DTR1 | DTR0 | |
0012H | ATR | 0 | 0 | ATR5 | ATR4 | ATR3 | ATR2 | ATR1 | ATR0 | |
0011H | INT | IM | AL1E | AL0E | F01 | F00 | X | X | X | |
0010H | BL | BP2 | BP1 | BP0 | WD1 | WD0 | 0 | 0 | 0 | |
000FH | Y2K1 | 0 | 0 | A1Y2K21 | A1Y2K20 | A1Y2K13 | 0 | 0 | A1Y2K10 | 19/20 |
000EH | DWA1 | EDW1 | 0 | 0 | 0 | 0 | DY2 | DY1 | DY0 | 0~6 |
000DH | 未使用,默認為RTC年字節(YR) | |||||||||
000CH | MOA1 | EMO1 | 0 | 0 | A1G20 | A1G13 | A1G12 | A1G11 | A1G10 | 1~12 |
000BH | DTA1 | EDT1 | 0 | A1D21 | A1D20 | A1D13 | A1D12 | A1D11 | A1D10 | 1~31 |
000AH | HRA1 | EHR1 | 0 | A1H21 | A1H20 | A1H13 | A1H12 | A1H11 | A1H10 | 0~23 |
0009H | MNA1 | EMN1 | A1M22 | A1M21 | A1M20 | A1M13 | A1M12 | A1M11 | A1M10 | 0~59 |
0008H | SCA1 | ESC1 | A1S22 | A1S21 | A1S20 | A1S13 | A1S12 | A1S11 | A1S10 | 0~59 |
0007H | Y2K0 | 0 | 0 | A0Y2K21 | A0Y2K20 | A0Y2K13 | 0 | 0 | A0Y2K10 | 19/20 |
0006H | DWA0 | EDW0 | 0 | 0 | 0 | 0 | DY2 | DY1 | DY0 | 0~6 |
0005H | 未使用,默認為RTC年字節(YR) | |||||||||
0004H | MOA0 | EMO0 | 0 | 0 | A0G20 | A0G13 | A0G12 | A0G11 | A0G10 | 1~12 |
0003H | DTA0 | EDT0 | 0 | A0D21 | A0D20 | A0D13 | A0D12 | A0D11 | A0D10 | 1~31 |
0002H | HRA0 | EHR0 | 0 | A0H21 | A0H20 | A0M13 | A0D12 | A0D11 | A0M10 | 0~23 |
0001H | MNA0 | EMN0 | A0M22 | A0M21 | A0M20 | A0M13 | A0M12 | A0M11 | A0M10 | 0~59 |
0000H | SCA0 | ESC0 | A0S22 | A0S21 | A0S20 | A0S13 | A0S12 | A0S11 | A0S10 | 0~59 |
狀態(tài)寄存器SR中位BAT為“1”,表示由電池VBACK供電,硬件置位/復位;位AL1、AL0為報警指示位,“1”為發(fā)生報警,狀態(tài)寄存器讀操作復位讀標志;位RWEL為寄存器寫(xiě)使能鎖存,位WEL為寫(xiě)使能鎖存,上電時(shí)均為“0”,禁止狀態(tài)。注意:要對CCR或存儲器進(jìn)行任何非易失性寫(xiě)操作,須首先寫(xiě)“02H”至SR,將WEL位置“1”,其次寫(xiě)“06H”至SR,將RWEL和WEL都置“1”,然后才能寫(xiě)實(shí)際數據到CCR或存儲器。
1.2 復位監控電路與看門(mén)狗定時(shí)器
X1228電源控制電路接收從Vcc和VBACK引腳輸入的電源,當VccVBACK-0.2V時(shí),電源控制電路將電源自動(dòng)切換至VBACK。上電時(shí),在Vcc超過(guò)復位門(mén)限值250ms后,RESET腳產(chǎn)生一個(gè)200ms的低電平脈沖為系統提供復位信號。X1228內部有一個(gè)檢測預置門(mén)限電壓的比較器監視Vcc引腳上的電壓,當發(fā)生電源失效時(shí),在RESET腳發(fā)出一個(gè)復位脈沖。注意:當產(chǎn)生復位脈沖時(shí),正在進(jìn)行的任何非易失性寫(xiě)操作不受影響,繼續操作直到完成。
看門(mén)狗定時(shí)器可通過(guò)向BL寄存器中WD1、WD0這兩位的“寫(xiě)入”,設置為3種不同超時(shí)間隔或不工作,“00”為1.75s,“01”為750ms,“10”為250ms,“11”為不工作??撮T(mén)狗啟動(dòng)時(shí),必須在規定間隔內對它進(jìn)行刷新,方法是在SCL線(xiàn)為高時(shí)SDA線(xiàn)產(chǎn)生下降沿。如果看門(mén)狗在規定間隔內沒(méi)有被刷新,則RESET腳變?yōu)橛行?。注意:如果使用開(kāi)始條件來(lái)刷新看門(mén)狗定時(shí)器,必須跟著(zhù)一個(gè)結束條件以復位X1228。
1.3 存儲器訪(fǎng)問(wèn)
X1228支持I2C總線(xiàn)協(xié)議,與CPU的連接很簡(jiǎn)單。如圖2所示,AT89C51為主器件,X1228為從器件。SCL為串行移位時(shí)鐘輸入,P3.4接SCL模擬時(shí)鐘信號;SDA為串行數據輸入輸出,P3.5與SDA相連以實(shí)現AT89C51與X1229的數據通信。X1228工作在中斷方式,由IRO引腳定時(shí)發(fā)出中斷信號,作為AT89C51 INT1的輸入信號。
主器件在發(fā)出開(kāi)始條件后必須接著(zhù)輸出一個(gè)地址字節。從地址字節的高4位是標識位,規定了訪(fǎng)問(wèn)E2PROM陣列還是訪(fǎng)問(wèn)CCR,“1010”表示訪(fǎng)問(wèn)E2PROM陣列,“1101”表示訪(fǎng)問(wèn)CCR;從地址字節的位3~位1是選擇位(I2C器件級聯(lián)時(shí)使用),X1228這3位總是“111”;從地址字節的最后一位R/W位定義操作類(lèi)型。
塊保護控制寄存器BL中位BP2、BP1、BP0決定了E2PROM存儲器陣列中哪些塊是寫(xiě)保護的,“000”表示“無(wú)寫(xiě)保護”,“001”表示地址0180H~01FFH寫(xiě)保護,“010”表示地址0100H~01FFH寫(xiě)保護,“011”表示“全地址寫(xiě)保護”,“100”表示地址0000H~003FH(第1頁(yè))寫(xiě)保護,“101”表示地址0000H~007FH(前2頁(yè))寫(xiě)保護,“110”表示地址0000H~00FFH(前4頁(yè))寫(xiě)保護,“111”表示地址0000H~01FFH(前8頁(yè))寫(xiě)保護。
對X1228存儲器的訪(fǎng)問(wèn)有隨機讀、順序讀、當前地址讀和字節寫(xiě)、頁(yè)寫(xiě)等,其操作均與標準I2C總線(xiàn)器件相同,在此不作重述。
2 X1228在電源控制器中的應用
為了充分利用實(shí)驗室資源,讓學(xué)生能夠自主選擇實(shí)驗內容與時(shí)間,從而激發(fā)學(xué)生積極參與科學(xué)實(shí)驗的興趣,提高分析問(wèn)題、解決問(wèn)題的能力,同時(shí)也為了緩解近年來(lái)高校擴招對實(shí)驗室的壓力,實(shí)現高校部分實(shí)驗室的開(kāi)放式管理勢在必行。我們研制的開(kāi)放式實(shí)驗室管理系統,再配上有經(jīng)驗的指導教師精心制作的實(shí)驗教學(xué)課件,為實(shí)驗室的無(wú)人值守化管理提供了物質(zhì)基礎。該開(kāi)放式實(shí)驗室管理系統由一個(gè)管理中心和一個(gè)門(mén)禁控制器及若干個(gè)實(shí)驗組電源控制器組成,系統框圖如圖3所示。學(xué)生進(jìn)入開(kāi)放式實(shí)驗室做實(shí)驗,必須先刷卡,得到允許后方可進(jìn)入。若實(shí)驗時(shí)間超過(guò)預定時(shí)間(前10分鐘發(fā)提示警告信息),則實(shí)驗組儀器設備的供電會(huì )自動(dòng)切斷。
管理中心由1臺計算機、報表打印機和管理軟件組成。完成的功能有:①I(mǎi)C卡的發(fā)放、實(shí)驗室儀器設備配置情況和實(shí)驗安排情況預置;②通過(guò)門(mén)禁控制器獲取實(shí)驗學(xué)生的有關(guān)信息,根據存儲在機內的儀器設備使用配置情況及預置的實(shí)驗安排情況,決策該學(xué)生當前是否能參與實(shí)驗并分配實(shí)驗組號;③向門(mén)禁控制器回發(fā)信息;④若允許學(xué)生進(jìn)入實(shí)驗室,則發(fā)指令至相應的實(shí)驗組電源控制器,以便及時(shí)為該組儀器設備供電;⑤對學(xué)生實(shí)驗時(shí)間、儀器設備使用情況進(jìn)行存儲管理,為實(shí)驗指導教師掌握學(xué)生實(shí)驗情、實(shí)驗技術(shù)人員進(jìn)行儀器設備的維護維修提供依據;⑥各種報表輸出。
門(mén)禁控制器主要負責:①對學(xué)生所持有的IC卡刷卡,以獲取與實(shí)驗有關(guān)的信息,通過(guò)RS485總線(xiàn)傳輸至上位機,以決定是否允許該學(xué)生進(jìn)入實(shí)驗室;②接收上位機發(fā)來(lái)的允許否信息,通過(guò)LCD顯示器顯示并執行;③學(xué)生實(shí)驗完畢,需再次刷卡,并通過(guò)門(mén)禁控制器所攜帶的小鍵盤(pán),對實(shí)驗組儀器則認為該實(shí)驗在規定時(shí)間內未完成,需重做。
實(shí)驗組電源控制器主要是接收上位機指令,控制每個(gè)實(shí)驗組儀器設備的供電情況,并在預定實(shí)驗結束時(shí)間的前10分鐘向學(xué)生發(fā)提示報警信息。
在實(shí)驗組電源控制器中,我們采用了AT89C51單片機控制實(shí)時(shí)時(shí)鐘芯片X1228(如圖2)來(lái)實(shí)現對每個(gè)實(shí)驗組儀器設備的供電情況定時(shí)控制,采用OCMJ2X8的LCD顯示模塊顯示實(shí)時(shí)時(shí)間。AT89C51從串行口接收來(lái)自PC的2字節命令,由P1.5輸出高電平,通過(guò)一只固態(tài)繼電器(SSR)SAP4010來(lái)接通220V交流供電電路;接收8字節BCD碼,寫(xiě)入X1228的RTC寄存器,對X1228進(jìn)行校時(shí);從串行口接收8字節寫(xiě)入Alarm0來(lái)設置X1228的報警輸出,在單片機的外中斷1服務(wù)程序中,通過(guò)P3.2口接的1只有源訊響器,在預定實(shí)驗結束時(shí)間的前10分鐘向學(xué)生發(fā)提示報警信息;實(shí)驗時(shí)間到,P1.5輸出高電平,通過(guò)SAP4010切斷220V交供電電流。管理中心上位機與電源控制器之間采用MAX3082構成的RS485總線(xiàn)進(jìn)行通信。因總線(xiàn)上允許最大節點(diǎn)數為256個(gè),故完全能滿(mǎn)足實(shí)際應用需要。
結語(yǔ)
在開(kāi)放式實(shí)驗室管理系統的電源控制器中,由于采用了I2C總線(xiàn)的實(shí)時(shí)時(shí)鐘芯片X1228,它集成時(shí)時(shí)鐘、報警輸出、電源監控和看門(mén)狗定時(shí)器于一體,從而大大減小了系統成本和電路板空間。該電源控制器若稍做改進(jìn),也可廣泛地應用地需要進(jìn)行定時(shí)開(kāi)關(guān)機的家用電器中。
評論