DSP虛擬I2C總線軟件包設(shè)計及應(yīng)用實例
3.1 器件相關(guān)功能簡介
X1203是帶時鐘/日歷電路和兩個鬧鐘(報警)的低功耗CMOS實時時鐘芯片。提供了雙埠時鐘和報警寄存器,在讀寫操作期間也能精確工作。其工作電壓從2.5~6 V均可,工作電流小于1uA。時鐘使用低成本的32.768 kHz晶體輸入,以秒、分、時、日、星期、月和年為單位記錄時間,具有閏年自動矯正功能,并對少于31天的月份自動調(diào)整;可通過設(shè)置中斷標志按指定時間激活中斷引腳,滿足大多數(shù)用戶對定時器編程的需要。該芯片引腳結(jié)構(gòu)如圖1所示(SOIC封裝)。
其中SCL為時鐘輸入端,數(shù)據(jù)隨該時鐘信號同步輸入器件或從器件輸出。此引腳上的輸入緩沖器始終激活。SDA端為雙向引腳,用于串行數(shù)據(jù)的輸入輸出;具有漏極開路,可與其它漏極開路或集電極開路輸出進行線或;需上拉電阻,與SCL引腳配合,可實現(xiàn)400 kHz的2線I2C接口。VBack為備用電源輸入端,用于VCC出現(xiàn)故障時向器件供電。是中斷信號輸出端,可通過設(shè)置報警寄存器按指定時間在該端產(chǎn)生報警信號;漏極開路,低電平有效。X1、X2分別為反相放大器的輸入、輸出端;可在X1端接入32.768 kHz的方波基準,或在X1、X2端接入32.768 kHz的石英晶振,配置成片內(nèi)振蕩器,在初始上電后至少有一個字節(jié)寫入RTC寄存器時,時鐘才開始計數(shù)。
X1203中的時鐘/控制寄存器(CCR)分5部分:2個8字節(jié)報警寄存器(Alarm0、Alarm1),1個1字節(jié)控制寄存器,1個8字節(jié)實時時鐘寄存器和1個1字節(jié)狀態(tài)寄存器。通過報警寄存器可設(shè)置報警發(fā)生的時間,控制寄存器可使能或禁止報警中斷信號的輸出,實時時鐘寄存器以BCD碼存儲了秒、分、時、日、星期、月和年,狀態(tài)寄存器中保存了用于報警狀態(tài)標志位及讀寫使能狀態(tài)位。其中狀態(tài)寄存器設(shè)置決定著數(shù)據(jù)是否能成功地寫入。該寄存器如表1所列。
BAT標識器件當前用VBack還是用VCC工作。AL1、AL0標識Alarm0、Alarm1是否實時時鐘匹配。RTCF表示實時時鐘是否失效,在總電源失效后該位置1。RWEL為寄存器寫使能鎖存,為0表示禁止,在任何寫時鐘/控制寄存器之前必須將該位置1。WEL為寫使能鎖存,低表示禁止,通過該位寫1、其它位寫0,可使該位置位;通過該位寫0、其它位寫0,可使該位清0。只有按規(guī)定順序設(shè)置RWEL和WEL,才能成功寫入CCR。
目前,很多DSP芯片尚不直接支持I2C的接口,F(xiàn)206也不例外,因而這里采用2根通用I/O口線模擬I2C接口。F206與X1203的接口采用如圖2所示的接口方案。
圖2中在X1、X2端接入32.768 kHz的石英晶振,將時鐘源配置為片內(nèi)振蕩器。在VCC和VBACK之間通過二極管和電阻相連,并與地間加入1個0.47 F的大電容。這樣,在電源出現(xiàn)故障或系統(tǒng)電源關(guān)閉時,仍可靠VBACK端的大電容供電維持時鐘芯片的正常工作。它與F206間接口采用3根口線,這里采用IO2模擬通信用的時鐘信號,IO3作為數(shù)據(jù)輸入、輸出口線。端可根據(jù)用戶需要而定,若需要時鐘芯片產(chǎn)生中斷,可將該端接到F206的中斷口線上。注意其中的SDA端和端為漏極開路,必須加上拉電阻,否則不能正常通信。
3.2 X1203的讀寫操作
這里僅給出F206對X1203進行讀寫的基本流程,如圖3、圖4所示,分別為對時鐘芯片的讀、寫過程。其中進行寄存器寫時,須注意SR寄存器中WEL和RWEL的設(shè)置是否正確,即首先設(shè)置WEL有效,而后將WEL、RWEL都置1,否則數(shù)據(jù)將不能正確寫入。在寫結(jié)束后,應(yīng)將WEL、RWEL置為無效,以免產(chǎn)生誤操作。
此外還須指出,在系統(tǒng)首次上電后(VBack和VCC都失效后),至少有一字節(jié)寫入RTC寄存器時,系統(tǒng)才開始工作。在實際使用中,應(yīng)首先判斷SR中的RTCF位是否為1,若是,表明系統(tǒng)為首次使用或VBack和VCC都已失效,須對X1203至少進行一次寫入操作,使其正常計數(shù)。
評論