帶RTC的I2C總線(xiàn)鐵電存儲器FM31256的設計
P5OUT |=RTC_SCL;// SCL=1
delay(IIC_DELAY);
P5OUT =~ RTC_SCL;// SCL=0}
void FM31256_Send_noAck( void ) {/*FM31256不應答程序*/
P5OUT |=RTC_SCL;// SCL=1
delay(IIC_DELAY);
P5OUT =~ RTC_SCL;// SCL=0}
說(shuō)明:SCL線(xiàn)是高電平時(shí),SDA線(xiàn)從高電平向低電平切換,表示起始條件;當SCL是高電平時(shí),SDA線(xiàn)由低電平向高電平切換,表示停止條件。相關(guān)的確認時(shí)鐘脈沖由主機產(chǎn)生,在確認的時(shí)鐘脈沖器件發(fā)送方釋放SDA(高電平),在此期間接收方須將SDA拉低。
void FM31256_transfByte_to_IIC( unsigned char tran_byte ) {/* CPU字節發(fā)送程序*/
unsigned char i , current_bit =0x80;
P5OUT =~ RTC_SCL;
delay(IIC_DELAY);
for( i=0; i =7; i++ ) {
if ( tran_byte current_bit )
P6OUT |= RTC_SDA;
else
P6OUT =~ RTC_SDA;
current_bit >>=1;
delay(IIC_DELAY);
P5OUT |=RTC_SCL;//SCL=1
delay(IIC_DELAY);
P5OUT =~ RTC_SCL;//SCL=0
delay(IIC_DELAY);
}
}
unsigned char FM31256_receByte_from_IIC( void ){/*CPU字節接收程序*/
unsigned char mvalue, i, rece_data =0;
P6DIR =~ RTC_SDA;//設置為輸入方向
P5OUT =~ RTC_SCL; //SCL=0
delay(IIC_DELAY);
for(i=0;i8;i++) {
rece_data = rece_data1;
P5OUT |=RTC_SCL;//SCL=1
delay(IIC_DELAY);
mvalue = P6IN RTC_SDA;//當前位的值
if( mvalue )//接收位為高
rece_data = rece_data | 0x01;
else//接收位為低
rece_data = rece_data 0xFE;
P5OUT =~ RTC_SCL;//SCL=0
delay(IIC_DELAY);
}
P6DIR |=RTC_SDA;//P6.6輸出
return(rece_data);//返回收到的字節
}
說(shuō)明:發(fā)送到SDA線(xiàn)上的每個(gè)字節須為8位。tran_byte為CPU要發(fā)送的字節,CPU讀入的數據存儲在rece_data中。對FM31256存儲器可以直接對當前地址進(jìn)行“讀”操作,也可以連續“讀/寫(xiě)”多個(gè)字節而無(wú)須逐一指定地址。依據上述一般步驟,對存儲器的訪(fǎng)問(wèn)操作可歸納為3種基本操作: ① 設置當前操作目標地址; ② 寫(xiě)入數據; ③ 讀出數據。
訪(fǎng)問(wèn)存儲器操作有多種,如內存“寫(xiě)”、當前地址或順序連續“讀”和隨機地址“讀”操作。在控制程序中,需要向FM31256內存中寫(xiě)入并讀出給定參數、故障信息等數據。內存讀/寫(xiě)的方法如下:
內存寫(xiě)操作,首先由CPU發(fā)送從機地址,然后是內存16位地址,主機通過(guò)設置從機地址字節的最低位為0聲明一個(gè)寫(xiě)操作;接收應答信號后,CPU向FM31256發(fā)送數據的每個(gè)字節,之后器件又產(chǎn)生應答信號,任何數量的連續字節可以被寫(xiě)入,以停止信號結束傳輸。有兩種類(lèi)型的讀操作:當前地址讀操作和隨機地址讀操作。讀操作同樣先由CPU發(fā)送從機地址,主機通過(guò)設置從機地址字節的最低位為1聲明一個(gè)讀操作。當要進(jìn)行隨機讀操作時(shí),還要在讀取數據之前,發(fā)送16位內存地址之后讀取任意個(gè)字節,每個(gè)字節后應跟隨應答信號,以停止信號結束傳輸。
在電磁鑄軋電源控制裝置的主控程序中,還將調用時(shí)鐘刷新函數Flash_time()、時(shí)鐘寫(xiě)入函數Write_time()、寄存器寫(xiě)入函數Register_write()和寄存器讀出函數Register_read()。
啟動(dòng)RTC和WatchDog的流程圖如圖4所示。

圖4 啟動(dòng)RTC和WatchDog的流程圖
結語(yǔ)
將鐵電存儲器用于電磁鑄軋電源控制裝置中,與MSP430系列單片機相結合,充分發(fā)揮了其強大的功能;同時(shí)取代了傳統的EEPROM和實(shí)時(shí)時(shí)鐘芯片,既降低了硬件成本,又簡(jiǎn)化了軟件設計。
評論