單片機(jī)技術(shù)篇之I2C 總線日歷時(shí)鐘芯片 PCF8563介紹
PCF8563 是PHILIPS 公司推出的一款工業(yè)級(jí)內(nèi)含I2C 總線接口功能的具有極低功耗的多功能時(shí)鐘/日歷芯片。PCF8563 的多種報(bào)警功能、定時(shí)器功能、時(shí)鐘輸出功能以及中斷輸出功能能完成各種復(fù)雜的定時(shí)服務(wù),甚至可為單片機(jī)提供看門(mén)狗功能。是一款性價(jià)比極高的時(shí)鐘芯片,它已被廣泛用于電表、水表、氣表、電話、傳真機(jī)、便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。
實(shí)時(shí)時(shí)鐘芯片PCF8563是低功耗的I2C總線器件,其內(nèi)部有定時(shí)器和報(bào)警器等資源,可以提供時(shí)、分、秒、月、日、年和星期等時(shí)間信息,被廣泛應(yīng)用于便攜式設(shè)備中。本節(jié)將簡(jiǎn)要介紹PCF8563的引腳、內(nèi)部寄存器和通信協(xié)議。
PCF8563有16個(gè)8位寄存器,其中包括:可自動(dòng)增量的地址寄存器、內(nèi)置32.768kHz的振蕩器(帶有一個(gè)內(nèi)部集成電容)、分頻器(用于給實(shí)時(shí)時(shí)鐘RTC提供源時(shí)鐘)、可編程時(shí)鐘輸出、定時(shí)器、報(bào)警器、掉電檢測(cè)器和400kHz的I2C總線接口。
1.PCF8563的引腳功能
PCF8563的引腳如圖6-14所示,其功能分別如下:
1)OSCI和OSCO分別是振蕩器的輸入和輸出引腳。
2)INT是中斷信號(hào)輸出引腳,低電平有效。
3)VDD和VSS分別是正電源引腳和接地引腳。
4)SDA和SCL分別是串行數(shù)據(jù)輸入/輸出引腳和串行時(shí)鐘信號(hào)引腳。
5)CLKOUT是時(shí)鐘信號(hào)輸出引腳。
2.PCF8563的內(nèi)部寄存器
PCF8563內(nèi)部有16個(gè)8位寄存器,每個(gè)寄存器都有地址,見(jiàn)表6-2。根據(jù)功能可以將這些寄存器分成三類:
1)控制寄存器,地址為01H~02H和0DH~0FH。
2)時(shí)鐘寄存器,地址為02H~08H,存放了時(shí)、分和秒等時(shí)鐘信息。
3)報(bào)警寄存器,地址為09H~0CH,用于設(shè)置報(bào)警時(shí)間。
單片機(jī)可以通過(guò)地址訪問(wèn)這些寄存器,以實(shí)現(xiàn)對(duì)PCF8563的操作控制。
3.PCF8563的通信協(xié)議
PCF8563有三種通信協(xié)議,分別如圖6-15~圖6-17所示,下面分別簡(jiǎn)要介紹。
(1)主機(jī)發(fā)送、從機(jī)接收的協(xié)議
假設(shè)單片機(jī)是主機(jī),PCF8563是從機(jī)。在圖6-15所示的協(xié)議中,主機(jī)發(fā)出啟動(dòng)信號(hào)之后再發(fā)送1個(gè)字節(jié),該字節(jié)的高7位是PCF8563的地址;最低位為0,表示主機(jī)將繼續(xù)向PCF8563發(fā)送數(shù)據(jù)。接下來(lái),主機(jī)發(fā)送PCF8563內(nèi)部寄存器的地址,以確定存放接收數(shù)據(jù)的寄存器。之后,主機(jī)連續(xù)向PCF8563發(fā)送n個(gè)字節(jié)數(shù)據(jù)。每接收1個(gè)字節(jié)數(shù)據(jù)后,PCF8563內(nèi)部寄存器的地址將自動(dòng)加1。發(fā)送完畢后,主機(jī)發(fā)出停止信號(hào),結(jié)束本次數(shù)據(jù)傳輸。
圖6-15 PCF8563協(xié)議之主機(jī)發(fā)送、從機(jī)接收
需要注意,PCF8563的地址格式如圖6-12所示。其中:地址高7位是固定的,即1010001,最低位為1和0分別表示單片機(jī)讀和寫(xiě)PCF8563,即:主機(jī)讀、寫(xiě)PCF8563的地址分別是0A3H和0A2H。另外,PCF8563沒(méi)有硬件地址定義引腳;對(duì)于有地址定義引腳的I2C器件,接收到器件地址后,需將該地址與地址定義引腳的狀態(tài)進(jìn)行比較,比較結(jié)果一致,才能進(jìn)行后續(xù)的通信操作。
(2)主機(jī)設(shè)置寄存器地址后再讀數(shù)
在圖6-16的協(xié)議中,主機(jī)發(fā)出啟動(dòng)信號(hào)后再發(fā)1個(gè)字節(jié),其中,高7位是PCF8563的地址;最低位是0,表示主機(jī)將繼續(xù)發(fā)數(shù)據(jù)。接著,主機(jī)發(fā)送PCF8563內(nèi)部寄存器的地址,以確認(rèn)下一步讀取PCF8563的哪一個(gè)寄存器。之后,主機(jī)開(kāi)啟一個(gè)讀PCF8563的過(guò)程,主機(jī)首先發(fā)出啟動(dòng)信號(hào);然后發(fā)出一個(gè)字節(jié),其中高7位是PCF8563的地址,最低位為1,表示接下來(lái)主機(jī)要讀PCF8563的數(shù)據(jù);之后主機(jī)開(kāi)始連續(xù)讀PCF8563發(fā)出的數(shù)據(jù)。
圖6-16 PCF8563協(xié)議之主機(jī)設(shè)置寄存器地址后再讀數(shù)據(jù)
需要注意,在由寫(xiě)操作切換到讀操作前,主機(jī)必須再次產(chǎn)生啟動(dòng)信號(hào),并利用之后發(fā)出的第1個(gè)字節(jié)(其最低位為1,表示讀操作)將PCF8563設(shè)置為發(fā)送方。
(3)主機(jī)設(shè)置從機(jī)地址后立即讀數(shù)據(jù)
在圖6-17的協(xié)議中,主機(jī)產(chǎn)生啟動(dòng)信號(hào)后再發(fā)送1個(gè)字節(jié)(該字節(jié)的最低位為1),以將自身設(shè)置為數(shù)據(jù)接收方,接下來(lái)連續(xù)讀取PCF8563發(fā)送的數(shù)據(jù)。
圖6-17 PCF8563協(xié)議之主機(jī)設(shè)置從機(jī)地址后立即讀數(shù)據(jù)