一.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進行簡單的讀寫,可以配合我另一篇文章看,更爲清晰。