AT24C02数据存储

介绍:AT24C02/04/08/16/32/64内含带电可擦除,断电不丢失的存储器E2PROM、

           通讯接口:I2C总线


一、字节写:将数据写入E2PROM中的字地址中。(连续写的周期为5ms)

数据帧时序图:

                                                                     字节写

      

                                                                         页写

器件地址:由硬件设计连接组成(如图:由E0、E1、E2决定器件地址,由于都接地,所以地址为0XA0)。

                           

                                            

ACK:为(发送 / 接受)应答

字地址:根据数据手册不同。

代码(字节写):

#define AT24C02_ADDRESS 0XA0

/**
   *   @brief AT24C02 写入一个字节   
   *   @param  WordAddress写入字节的地址
   *   @param   Data 写入的数据 
   *   @retval   无
**/

void AT24C02_WritByte(unsigned char WordAddress,Data)
{
	I2C_Start();       //起始条件
	I2C_SendByte(AT24C02_ADDRESS);  //写入器件地址
	I2C_ReceiveAck();               //接受应答
	I2C_SendByte(WordAddress);      //写入字地址
	I2C_ReceiveAck();               //接受应答
	I2C_SendByte(Data);             //写入数据
	I2C_ReceiveAck();               //接受应答
	I2C_Stop();                     //终止条件
} 

二、字节读:将E2PROM字地址的数据读取出来。(期间地址中读/写位(最低位)置1)

数据帧时序图:

                                                                     当前地址读

                                                               随机读

                                                                顺序读

 代码(随机读):

#define AT24C02_ADDRESS 0XA0


/**
   *   @brief  AT24C02 读取一个字节   
   *   @param  WordAddress读出字节的地址
   *   @retval  Data 读出的数据
**/

unsigned char AT24C02_ReadByte(unsigned char WordAddress)
{
	unsigned char Data;           
	I2C_Start();               //起始条件
	I2C_SendByte(AT24C02_ADDRESS);     //发送期间地址
	I2C_ReceiveAck();                  //接受应答
	I2C_SendByte(WordAddress);         //发送字地址(写入地址)
	I2C_ReceiveAck();                  //接受应答
	I2C_Start();                       //起始条件
	I2C_SendByte(AT24C02_ADDRESS|0X01);  //发送器件地址命令(读取地址,末尾置1)
	I2C_ReceiveAck();                   //接受应答
	
	Data=I2C_ReceiveByte();             //读取数据
	
	I2C_SendAck(1);           //发送应答
	I2C_Stop();               //终止条件
	return Data;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值