帶RTC的I2C總線鐵電存儲器FM31256的設(shè)計(jì)
圖2 I2C總線通信基本格式
FM31256嚴(yán)格按I2C總線的時序和數(shù)據(jù)格式操作,其訪問操作過程可描述為如下步驟: 啟動—從機(jī)地址—應(yīng)答—目標(biāo)地址—應(yīng)答—(啟動—從機(jī)地址—應(yīng)答)—數(shù)據(jù)(單或多字節(jié))—應(yīng)答—停止(注: 從機(jī)地址中包含了讀寫命令;括號中的步驟為當(dāng)前地址讀和連續(xù)地址讀命令所特有的)。這里對應(yīng)答信號作些說明。應(yīng)答脈沖發(fā)生在第8個數(shù)據(jù)位傳送之后。在這個狀態(tài)下,發(fā)送方須釋放SDA讓接收方驅(qū)動;當(dāng)接收方發(fā)出低電平時,表示正常應(yīng)答,當(dāng)發(fā)出高電平時,表示無應(yīng)答。不應(yīng)答有兩種情況: 一是數(shù)據(jù)傳送出錯,無應(yīng)答使發(fā)送方終止當(dāng)前操作,以便重新尋址;二是接收方有意不作應(yīng)答,以結(jié)束當(dāng)前操作。
在對SFR操作時,首先發(fā)送的命令字節(jié)為“1 1 0 1 X A1 A0 R/W”,目標(biāo)地址為單字節(jié)范圍(00H~18H)。FM31256的32 KB存儲單元地址為0000H~7FFFH,對其進(jìn)行操作時,首先發(fā)送的命令字節(jié)為“1 0 1 0 X A1 A0 R/W”,目標(biāo)地址長度為雙字節(jié),即RAM區(qū)的尋址能力為0~65 535。FM31系列存儲器具有內(nèi)部地址鎖存和自動累加功能,當(dāng)對連續(xù)地址區(qū)進(jìn)行讀/寫操作時,只須發(fā)送存儲區(qū)首地址。
3 FM31256在電磁鑄軋電源控制中的應(yīng)用
將FM31256應(yīng)用在電磁鑄軋電源控制裝置當(dāng)中,實(shí)現(xiàn)主控系統(tǒng)的看門狗復(fù)位、給定參數(shù)、實(shí)時時鐘及故障記錄保存的功能。
作為一種解決微處理器因干擾而死機(jī)問題的有效方法,看門狗的作用是必不可少的。針對控制對象,需要對A、B、C三相控制裝置進(jìn)行調(diào)節(jié),包括設(shè)定正弦波的頻率和幅值、反饋系數(shù)、PID參數(shù)、過流延時、開放延時和關(guān)斷延時等;將這些給定的參數(shù)及時寫入鐵電存儲器FM31256的存儲單元中,使之掉電后仍能保存。當(dāng)系統(tǒng)發(fā)生故障時,例如控制裝置中晶閘管周圍溫度超過額定溫度,裝置就會發(fā)出報(bào)警信號,并將發(fā)生故障的準(zhǔn)確時間、實(shí)際溫度值記錄在FM31256的存儲單元中,以便系統(tǒng)查詢;同時,FM31256的事件計(jì)數(shù)器加1計(jì)數(shù)。同樣,利用串行標(biāo)識區(qū)可鎖定的功能,可將電磁鑄軋電源控制裝置的序列號寫入其中,非常安全可靠。
3.1 硬件原理
電磁鑄軋電源控制裝置應(yīng)用FM31256的硬件接口電路如圖3所示。從圖3中可以看出,系統(tǒng)以超低功耗MSP430系列芯片MSP430F149作為控制器;FM31256作為參數(shù)存儲單元,與處理器之間采用I2C總線進(jìn)行通信。由于MSP430F149沒有I2C總線接口,所以任取2個I/O口模擬。實(shí)時時鐘在VDD掉電以后自動切換到后備電源VBAK。
圖3 FM31256與MSP430F149的硬件接口電路
32.768 kHz晶振等效于6 pF電容。若將SFR的01H單元對應(yīng)的OSCEN位設(shè)為0,同時置00H單元的CAL位為1,使CAL引腳輸出512 Hz的脈沖信號,則可檢測晶振工作是否正常,因?yàn)?12 Hz是晶振頻率的64分頻。制PCB板時須注意: X1和X2晶振引腳均為高阻引腳,兩引腳之間的距離須小于5 mm;即使信號位于板內(nèi)層,也不允許信號線靠近X1和X2引腳。在晶振引腳周圍使用接地保護(hù)環(huán),內(nèi)部或板反面使用接地保護(hù)敷銅。
3.2 存儲區(qū)訪問程序設(shè)計(jì)
對FM31256存儲器訪問操作過程中,微處理器處于主機(jī)地位,器件始終處于從機(jī)地位。根據(jù)上述對FM31256的分析,可以把所有的通信過程歸納為3種類型: ① 單脈沖,如Start、Stop、Ack、Nack;② 字節(jié)發(fā)送,如從機(jī)地址、目標(biāo)地址和數(shù)據(jù)傳送;③ 字節(jié)接收,如讀操作中的數(shù)據(jù)傳送。因此只要把這些操作以子程序的形式編寫好,所有的通信操作就可通過調(diào)用這些子程序來完成。這里以MSP430F149微處理器的嵌入式C語言編寫。設(shè)微處理器端口P6.6為數(shù)據(jù)線(SDA);P5.4為時鐘線(SCL)。
限于篇幅,本文不作詳細(xì)介紹,只給出模擬I2C總線及字節(jié)寫入、讀出的部分C語言程序:
#defineRTC_SDABIT6
#defineRTC_SCLBIT4
void FM31256_Start(void) {/*FM31256啟動程序*/
P6OUT |=RTC_SDA;// SDA=1
P5OUT |=RTC_SCL;// SCL=1
delay(IIC_DELAY);
P6OUT =~ RTC_SDA;// SDA=0
delay(IIC_DELAY);
P5OUT =~ RTC_SCL;// SCL=0}
void FM31256_Stop( void ) {/*FM31256停止程序*/
P6OUT =~ RTC_SDA;// SDA=0
delay(IIC_DELAY);
P5OUT |=RTC_SCL;// SCL=1
delay(IIC_DELAY);
P6OUT |=RTC_SDA;// SDA=1
delay(IIC_DELAY);}
void FM31256_Send_Ack( void ) {/*FM31256應(yīng)答程序*/
P5OUT =~ RTC_SCL;// SCL=0
P6OUT =~ RTC_SDA;// SDA=0
評論