蓝桥杯单片机快速开发笔记——AT24C02 E2PROM

一、原理分析

        此处考点分析:可能会在引用iic驱动文件时需要自己在头文件定义SCL/SDA

sbit sda = P2^1;
sbit scl = P2^0;
  1. 工作原理:24C02是一种电可擦除可编程只读存储器,通过I2C总线与微处理器或控制器通信。它可以通过电子方式对存储的数据进行读取、写入和擦除操作。

  2. 存储结构:24C02内部由若干存储单元组成,每个存储单元可以存储一个字节的数据。数据可以通过I2C总线按地址进行读写操作。

  3. 读写操作:通过I2C总线发送读写指令和地址,可以实现对24C02中存储数据的读取和写入。读取时,将地址发送给24C02,它会返回对应地址的数据;写入时,发送地址和数据给24C02,它会将数据写入指定地址。

二、应用

  1. 参数存储:24C02常用于存储系统参数、校准数据、配置信息等,如嵌入式系统中的设备参数存储。

  2. 日志记录:在一些应用中,24C02可用于记录事件日志、运行状态等信息,方便系统故障排查和数据分析。

  3. ID存储:在一些设备中,24C02可用于存储设备的唯一标识符或ID信息,用于识别设备身份。

  4. 密钥存储:在安全应用中,24C02可用于存储加密密钥、认证信息等敏感数据,保护系统安全。

  5. 参数调整:一些设备中,24C02可用于存储用户设置的参数、调整值,如显示器的亮度、音量等。

三、思维导图

四、示例框架

#include "e2prom.h"
#include "iic.h"

//24C02单字节写入
void Write_24C02(unsigned char addr, unsigned char dat)
{
	I2CStart();           //起始信号
  I2CSendByte(0xa0);    //EEPROM的写设备地址
  I2CWaitAck();         //等待从机应答
  I2CSendByte(addr);    //内存单元地址
  I2CWaitAck();         //等待从机应答
  I2CSendByte(dat);     //内存写入数据
  I2CWaitAck();         //等待从机应答
  I2CStop();            //停止信号
}

//24C02单字节读取
unsigned char Read_24C02(unsigned char addr, unsigned char dat)
{
	unsigned char tmp;
  //首先,进行一个伪写操作
  I2CStart();              //起始信号
  I2CSendByte(0xa0);       //EEPROM的写设备地址
  I2CWaitAck();            //等待从机应答
  I2CSendByte(addr);       //内存单元地址
  I2CWaitAck();            //等待从机应答
  //然后,开始字节读操作
  I2CStart();              //起始信号
  I2CSendByte(0xa1);       //EEPROM的读设备地址
  I2CWaitAck();            //等待从机应答
  tmp = I2CReceiveByte();  //读取内存中的数据
  I2CSendAck(1);           //产生非应答信号
  I2CStop();               //停止信号
  return tmp;
}

        通过I2C总线与24C02 EEPROM芯片进行通信,实现单字节数据的写入和读取操作。通过发送起始信号、设备地址、内存单元地址和数据,以及等待应答和停止信号,实现了对24C02的数据读写操作。

  1. void Write_24C02(unsigned char addr, unsigned char dat):定义了一个无返回值的函数Write_24C02(),用于向24C02 EEPROM芯片写入单个字节的数据。

  2. I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(addr);I2CWaitAck();I2CSendByte(dat);I2CWaitAck();I2CStop();:通过I2C总线发送起始信号、设备地址、内存单元地址和数据,以及等待从机应答和停止信号,实现向24C02写入数据的操作。

  3. unsigned char Read_24C02(unsigned char addr, unsigned char dat):定义了一个返回无符号字符型数据的函数Read_24C02(),用于从24C02 EEPROM芯片读取单个字节的数据。

  4. unsigned char tmp;:定义了一个无符号字符型变量tmp,用于存储读取的数据。

  5. I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(addr);:发送起始信号、设备地址和内存单元地址,进行伪写操作。

  6. I2CStart();I2CSendByte(0xa1);I2CWaitAck();tmp = I2CReceiveByte();I2CSendAck(1);I2CStop();:发送起始信号、读设备地址,读取内存中的数据,产生非应答信号并停止信号,实现从24C02读取数据的操作。

  7. return tmp;:返回读取的数据。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-16 09:48:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-16 09:48:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-16 09:48:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-16 09:48:06       20 阅读

热门阅读

  1. vue2 / vue3 路由(返回&跳转)时判断 + 取消跳转

    2024-03-16 09:48:06       19 阅读
  2. 力扣_动态规划3—地下城游戏

    2024-03-16 09:48:06       19 阅读
  3. 代码随想录算法训练营day60|第十章 单调栈part03

    2024-03-16 09:48:06       21 阅读
  4. 【数据结构和算法】-贪心算法

    2024-03-16 09:48:06       17 阅读
  5. hive逗号分割行列转换

    2024-03-16 09:48:06       21 阅读
  6. 【iOS ARKit】PhysicsMotionComponent

    2024-03-16 09:48:06       21 阅读