stm32F4之使用I2C讀寫24C02

一.24C02簡單介紹

                1.串行E2PROM是基於I2C-BUS 的存儲器件,

                2.可以支持100萬次擦除,數據可以保存100年,

                3.支持每次讀寫1字節

                 4.寫週期最大5ms(即最好保證在5ms後進行讀寫,否則可以數據將會讀取錯誤

二.24C02的讀寫時序圖

從手冊中可以找到以下兩個讀寫圖,我也將以以下兩個圖爲例進行函數編寫,其他讀寫圖請查手冊

 

三.用模擬的I2C協議封裝24C02的讀與寫

      該設備爲IIC設備,因此我們要先確定其設備地址,STM32F4探索者的開發板上爲2K的E2PROM,A2=A1=A0  因此設備地址爲(0XA0/0xA1)

 根據下圖進行編程:

字節寫:

 使用封裝好的I2C函數,進行函數24C02的寫函數封裝:

函數編寫流程爲 :start->發送設備地址->等待ACK->發送需要被寫的內存地址->等待ACK->發送數據寫入E2PROM->等待ACK->STOP

void sendOneByte(u8 Adddrsend, u8 Datasend)
{
	IIC_start();
	IIC_Send_Byte(0xA0);
	IIC_Wait_Ack();
	IIC_Send_Byte(Adddrsend);
	IIC_Wait_Ack();
	IIC_Send_Byte(Datasend);
	IIC_Wait_Ack();
	IIC_stop();
	delay_ms(10);
}

字節讀:

讀函數編寫流程:start->發送設備地址->等待ACK->發送需要被讀的內存地址->等待ACK->發送讀指令(設備地址)->等待ACK-->讀內存數據->等待no ACK->STOP 

u8 receiceOneByte(u8 Adddreceive)
{
	u8 receive=0;
	IIC_start();
	IIC_Send_Byte(0xA0);
	IIC_Wait_Ack();
	IIC_Send_Byte(Adddreceive);
	IIC_Wait_Ack();
	IIC_start();
	IIC_Send_Byte(0xA1);
	IIC_Wait_Ack();
	receive=IIC_Read_Byte(0);
	IIC_stop();
	return receive;
}

最後就可以對24C02進行簡單的讀寫,可以配合我另一篇文章看,更爲清晰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章