蓝桥杯嵌入式第八课--EEPROM读写
创始人
2025-05-30 09:17:38

前言

E2PROM的读写主要是考察IIC的使用,但是在比赛当中I2C的各种驱动文件都是直接给出的,因此我们需要做的工作就是根据EEPROM的读写时序配出读写的函数来。

EEPROM硬件连接图

我们可以看到IIC的数据线(已上拉)有两路去处,一路向上通往EEPROM(U2),一路向左通向编程电阻U3,为了确认IIC控制的是哪路设备,这里就有一个Device地址的问题:

从电路图可知,地址中的A2A1A0三位在硬件中都是接地的(0),因此可以得出读写的Device地址:

  • 写地址:1010_0000,即0xa0

  • 读地址:1010_0001,即0xa1

EEPROM读写时序

我们考试中可以打开芯片手册AT24C02,可以看到读写的时序图:

一、写字节

  1. 启动

  1. 发送0xa0

  1. 等待ACK

  1. 发送写地址

  1. 等待ACK

  1. 发送数据

  1. 等待ACK

  1. 结束

每个步骤分别对应着IIC的对应函数

二、读字节

  1. 启动

  1. 发送0xa0

  1. 等待ACK

  1. 发送读地址

  1. 等待ACK

  1. 启动

  1. 发送0xa1

  1. 等待ACK

  1. 读取数据

  1. 停止

可以看到,读数据时有一个重复启动总线的过程,值得我们注意一下。从上面的发送时序可以看出,除了启动和停止,还要读操作,其它的基本上是发送操作的后面接一个等待ACK ,这是一个特征。

实例程序

一、读

uint8_t EEPROMread(uint8_t address) //读输入的参数就只有地址,数据类型是uchar
{uint8_t date=0;IIC_Start();IIC_SendByte(0xa0);IIC_WaitAck();IIC_SendByte(address);IIC_WaitAck();IIC_Start();IIC_SendByte(0xa1);IIC_WaitAck();date = IIC_RecByte();IIC_Stop();return date;
}

二、写

void EEPROMwrite(uint8_t address,uint8_t data)
{IIC_Start();              //IIC起始信号IIC_SendByte(0xa0);       //发送器件写地址IIC_WaitAck();            //等待应答信号IIC_SendByte(addr);       //发送数据的位置IIC_WaitAck();            //等待应答信号IIC_SendByte(value);      //发送要写的数据IIC_WaitAck();            //等待应答信号IIC_Stop();               //发送停止信号
}

写这个程序的要点在于,地址与数据的类型都是uint8_t类型的。

总结

使用EEPROM的步骤主要分为两部分:

  1. 相关库函数移植

  1. 根据时序图编写读写操作代码

从开始到现在第八课,蓝桥杯大部分内容都已经包含在内,接下来本专栏的重点会集中在实战应用上,并且不断补充涉及的知识点。

相关内容

热门资讯

长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...