蓝桥杯iic之AT24C02(教你如何依据数据手册写代码)

   日期:2021-03-05     浏览:99    评论:0    
核心提示:AT24C02目的:存储数据原理写入读出三级目录目的:存储数据做一件事,首先了解他的目的,我们室友AT24C03是为了存储数据在eeprom中,达到断电仍可保存的目的。于是我们就需要弄清如何将数据写入 以及 如何读出写入的数据。我将以最简单的方式教你依据数据手册 写出 存储数据的程序。原理写入从上图可以发现,却认为的SDA为低电平~,我们有官方给的驱动里可以找到这么一个函数void IIC_SendAck(bit ackbit){ SCL = 0; SDA = ackbi

AT24C02

  • 目的:存储数据
    • 原理
      • 写入
      • 读出

目的:存储数据

做一件事,首先了解他的目的,我们使用AT24C03是为了存储数据在eeprom中,达到断电仍可保存的目的。
于是我们就需要弄清如何将数据写入 以及 如何读出写入的数据。
我将以最简单的方式教你依据数据手册 写出 存储数据的程序。

原理

写入


从上图可以发现,却认为的SDA为低电平~,我们有官方给的驱动里可以找到这么一个函数

void IIC_SendAck(bit ackbit)
{ 
    SCL = 0;
    SDA = ackbit;  					// 0:应答,1:非应答
    IIC_Delay(DELAY_TIME);
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SCL = 0; 
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

IIC_SendAck(0)可以作为发送应答~
控制字节的高四位 1010 = 9
低4位由A0,A1,A2, 0 组成,其中A0,A1,A2电平 表示选择哪一个AT24C02,注意

起始位: start
控制字节: 一般来说 为0x90
确认位: 上面我们提及的发送应答,将SDA置0;
地址字节:存储数据的地址,AT24xx00的器件,只使用地址字节的低四位,所以存储地址为0~255
数据字节: 我们想存储的数据
P: 停止位
请注意确认位的正确书写,不能少写也不能多写,只有应答了,单片机才清楚你已经执行上一步,他才会准备下一步要做什么。否则程序将停滞不前或者跑飞


void W_at24c02(u8 address,u8 dat)
{ 
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_SendAck(0);
	IIC_SendByte(address);
	IIC_SendAck(0);
	IIC_SendByte(dat);
	IIC_SendAck(0);
	IIC_Stop();
}

读出


由芯片手册,我们看出随机读取操作才能正确的将我们当前存储地址的数据 读取出来,而当前读取操作会 读取到我们写入地址再+1 的地址,里面没有存储我们的数据。

并且,随机读取,需要先发送字节地址(此时为写操作),字节地址发送完毕后,主器件收到确认信号就产生起始条件。
下面是代码流程:

s起始位: start
控制字节: 0x90(此时为写如)
确认位: 上面我们提及的发送应答,将SDA置0;
地址字节:之前我们写入过数据的地址
确认位: 将SDA置0;
s起始位: start
控制字节: 0x91(此时为读操作)
数据字节: 读取 之前发送的地址字节 里的数据
这里没有确认位
P: 停止位

u8 R_at24c02(u8 address)
{ 
	u8 temp;
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_SendAck(0);
	IIC_SendByte(address);
	IIC_SendAck(0);
	
	IIC_Start();
	IIC_SendByte(0xa1);
	IIC_SendAck(0);
	temp = IIC_RecByte();
	IIC_Stop();
	return temp;
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服