AT24C02
原理图
AT24C02 存储器写操作需要在给出开始态、器件地址和确认之后,紧跟着给出一个 8 位数据
地址。一经收到该地址, EEPROM 就通过 SDA 发出确认信号,并随时钟输入 8 位数据。在收到 8
位数据之后, EEPROM 将向 SDA 确认,数据传送设备必须用停止状态来终止写操作,这时,
EEPROM 进入一个内计时固定存储器写入周期。在该写周期时,所有输入被禁止, EEPROM 直到
写完后才应答
1KB/2KB EEPROM 能进行 8 字节页面写入, 4KB、 8KB 和 16KB 设备能进行 16 字节页面写
入。激发写页面与激发写字节相同,只是数据传送设备无须在第一个字节随时钟输入之后,发出
一个停止状态。在 EEPROM 确认收到第一个数据之后,数据传送设备能再传送 7 个(1KB、 2KB)
或 15 个(4KB、 8KB、 16KB)数据,每一个数据收到之后, EEPROM 都将通过 SDA 回送一个确
认信号,最后数据传送设备必须通过停止状态终止页面写序列。
顺序读取由立即地址读取或随机地址读取激发,在读数据器件
收到一数据码之后,通过确认应答,只要 EEPROM 收到确认之后,便会继续增加数据码地址及串
行输出数据码。当达到存储器地址极限时,数据码地址将重复滚动,顺序读取将继续。当读数据
器件不通过确认(使 SDA 总线处于高电平)应答,而通过产生一个停止条件应答时,顺序读取操
作被终止.
代码
//函数功能:向AT24C02中写入一个数据
void wr_24c02(unsigned char add,unsigned char data1)
{
IIC_Start();//打开iic
IIC_SendByte(0xa0);//写入设备地址
IIC_WaitAck();//等待应答
IIC_SendByte(add);//写入控制字节
IIC_WaitAck();//等待应答
IIC_SendByte(data1);//写入数值
IIC_WaitAck();//等待应答
IIC_Stop();//停止
}
//函数功能:从AT24C02中读取一个数据
unsigned char rd_24c02(unsigned char add)
{
unsigned char temp;
IIC_Start();//
IIC_SendByte(0xa0);//读取设备地址
IIC_WaitAck();//等待应答
IIC_SendByte(add);//读取控制字
IIC_WaitAck();//等待应答
IIC_Stop();//停止
IIC_Start();//
IIC_SendByte(0xa1);//
IIC_WaitAck();//等待应答
temp=IIC_RecByte();//
IIC_WaitAck();//等待应答
IIC_Stop();//停止
return temp;//
}