EEPROM学习随笔


一、功能描述

数据存储有多种方式,常见的有RAM、FLASH以及接下来要进行学习的EEPROM。
保存在RAM中的数据在掉电后就会丢失,保存在FLASH中的数据不能随意改变,无法记录变化的数值,故使用EEPROM来保存数据。
EEPROM共256个字节的存储空间,地址从0x00~0xff,想把数据存储在哪个位置,此刻写的就是哪个地址,可重复擦写30w到100w次。
在这里插入图片描述
参考上方图表,结合设备原理图可以确定EEPROM的设备地址。
本次选用的EEPROM设备地址为0xA0.


二、读写操作时序

2.1 写数据

第一步:首先是IIC的起始信号,接着发送EEPROM的地址和读写位的组合,读写位选择“写”。
第二步:发送要写入数据的EEPROM内部存储地址add。
第三步:发送要存储的数据第一个字节、第二个字节… …。
注意:
1、写数据的过程中,每个字节结束后EEPROM都会回应一个“应答位0”,告诉我们写EEPROM成功,如果没有应答表示未成功。
2、写数据过程中,每成功写入一个字节,EEPROM地址自动加1,当加到最大值后,再增加会溢出。

void I2C_Write_AT24C02(uint8_t add,uint8_t data)
{
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	
	I2CSendByte(add);
	I2CWaitAck();
	
	I2CSendByte(data);
	I2CWaitAck();
	
	I2CStop();
}

2.2 读数据

第一步:首先是IIC的起始信号,接着发送EEPROM的地址和读写位的组合,读写位选择“写”。
第二步:发送要读取的EEPROM内部存储地址add。
第三步:重新发送I2C的起始信号和器件地址,并且在方向位选择“读”操作。
(在前三步,每一个字节实际上都是在“写”,因此EEPROM都会回应一个“应答位0”。)
第四步:读取从器件发回的数据,每读一个字节,如果还想继续读下一个字节,就发送一个“应答位0”,如果不想继续读了,就发送一个“非应答位1”。
应答位: ACK 非应答位:NACK

//读取EEPROM中一个字节
uint8_t I2C_Read_AT24C02(uint8_t add)
{
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	
	I2CSendByte(add);
	I2CWaitAck();
	
	I2CStart();
	I2CSendByte(0xA1);
	I2CWaitAck();
	
	data = I2CReceiveByte();
	I2CWaitAck();
	I2CStop();
	
	return data;
}

多字节和页写入后续用到时会继续补充!
欢迎大家批评指教!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DayDayUp..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值