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