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