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

news2025/1/2 0:15:13

一、原理分析

        此处考点分析:可能会在引用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;:返回读取的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1520651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode Python - 55.跳跃游戏

目录 题目答案运行结果 题目 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 fal…

VUE 运行NPM 报错:npm ERR! code CERT_HAS_EXPIRED 解决方案

现象 由于各种原因需要调试一下VUE代码,用Git拉下来运行不了(之前是可以正常运行的),报错为:npm ERR! code CERT_HAS_EXPIRED........... 原因 NPM 证书签名过期了 解决方法 第一步:CMD 命令 查看NPM代理源…

抖音获得抖音商品详情 API 返回值说明

抖音(Douyin)的商品详情API返回值通常会包含有关商品的详细信息。这些信息可能包括但不限于商品ID、商品名称、商品价格、商品图片、商品描述、商品销售属性等。以下是一个简化的抖音商品详情API返回值示例和说明: 调用链接获取详情 item_g…

【elasticsearch实战】从零开始设计全站搜索引擎

业务需求 最近需要一个全站搜索的功能,我们的站点的特点是数据多源,即有我们本地数据库,也包含了第三方数据源,我们的数据类型除了网页,还包括了各种类型的文档,例如:doc、pdf、excel、ppt等格…

Hive借助java反射解决User-agent编码乱码问题

一、需求背景 在截取到浏览器user-agent,并想保存入数据库中,经查询发现展示的为编码后的结果。 现需要经过url解码过程,将解码后的结果保存进数据库,那么有几种实现方式。 二、问题解决 1、百度:url在线解码工具 …

Mac上使用M1或M2芯片的设备安装Node.js时遇到一些问题,比如卡顿或性能问题

对于Mac上使用M1或M2芯片的设备可能会遇到在安装Node.js时遇到一些问题,比如卡顿或性能问题。这可能是因为某些软件包或工具在M1或M2芯片上的兼容性不佳。为了解决这个问题,您可以尝试以下方法: 1. 使用Rosetta模式 对于一些尚未适配M1或M2…

YOLOv9|加入2023Gold YOLO中的GD机制!遥遥领先!

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 一、Gold YOLO摘要 在过去的几年里,YOLO系列模型已经成为实时目标检测领域的领先方法。许多研究通过修改体系结构、增加数据和设计新的损…

记录dockers中Ubuntu安装python3.11

参考: docker-ubuntu 安装python3.8,pip3_dockerfile ubuntu22 python3.8-CSDN博客

JavaScript中的事件模型(详细案例代码)

文章目录 一、事件与事件流二、事件模型原始事件模型特性 标准事件模型特性 IE事件模型 一、事件与事件流 javascript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性, 常见的有加载事件、鼠标事件、自定…

FPGA静态时序分析与约束(四)、时序约束

系列文章目录 FPGA静态时序分析与约束(一)、理解亚稳态 FPGA静态时序分析与约束(二)、时序分析 FPGA静态时序分析与约束(三)、读懂vivado时序报告 文章目录 系列文章目录前言一、什么是时序约束&#xff1…

【CVE-2022-47549】OPTEE之使用故障注入攻击绕过Raspberry Pi3上的TA签名验证

目录 一、问题描述 二、严重性评估 三、缓解措施 四、Patches 五、解决方案 六、参考 七、OP-TEE ID 八、报告人/单位 九、更多信息 十、时间线 一、问题描述 SEAL研究人员和工程师成功地通过利用电磁故障注入的glitch攻击,在树莓派3设备上攻克了签名检查…

佛教圣地——普陀山

洛 迦 山 今天早上集合时间是5:20,我们不到4点都醒了,昨天晚上我并没有睡着。清早起来之后,身体很是匮乏。但我们还需要去托运行李,所以只能匆忙起来,等忙活完了,已经5点多了,我们下楼走到小区门…

SCUI Admin:快速构建企业级中后台前端的利器 让前端开发更快乐。

欢迎加入我们的前端组件学习交流群,可添加群主微信,审核通过后入群。 随着Web技术的不断发展,中后台前端解决方案在各类企业级应用中扮演着越来越重要的角色。SCUI Admin正是一款基于Vue3和elementPlus的WebUI前端框架,旨在帮助开…

离线安装docker、docker-compose、Mysql镜像

离线安装docker docker-compose mysql镜像 一、下载docker docker-compose mysql 镜像文件 1、首先下载docker镜像 博主所用文件版本号: docker-23.0.6.tgz 下载docker 地址 :https://blog.csdn.net/xiaohanshasha/article/details/135489623?spm1001…

Keil笔记(缘更)

Keil 一、使用Keil时可能会出现的问题1.Project框不见了2.添加文件时找不到3.交换文件位置4.main.c测试报1 warning 二、STLINK点灯操作1.配置寄存器进行点灯2.使用库函数进行点灯 3.GPIO1.LED闪烁 一、使用Keil时可能会出现的问题 1.Project框不见了 view->Project Windo…

免费分享一套SpringBoot+Vue自习室(预约)管理系统,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue自习室预约)管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue自习室预约(预约)管理系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue自习室预约(预约)管理系统…

景联文科技:提供通用多模态数据,助力AI多模态领域实现飞跃式发展

回顾2023年,以ChatGPT为代表的通用人工智能大模型在全球范围内掀起了新一轮人工智能产业发展浪潮,我国人工智能大模型市场呈现百“模”争鸣、日新月异的迅猛发展态势。 根据大模型之家、钛媒体数据,2023年中国大模型市场规模达到147亿人民币&…

2024/3/14打卡棋子(14届蓝桥杯)——差分

标准差分模板 差分——前缀和的逆运算(一维二维)-CSDN博客 题目 小蓝拥有 nn 大小的棋盘,一开始棋盘上全都是白子。 小蓝进行了 m 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色&#xff0…

药店在线客服机器人的设计与开发

摘要 随着信息技术的快速发展和人工智能领域的不断进步,药店在线客服机器人已经成为现代药店服务模式中不可或缺的一部分,这种机器人技术通过模拟人类客服代表,能够提供24/7的咨询服务,从而大幅提高服务效率和顾客满意度&#xff…

进程和ELF文件

程序的二进制格式: 关联知识:GCC编译原理与使用-CSDN博客 linux二进制程序的严格格式:ELF(Executeable and Linkable format) 一 预处理,编译,汇编得到的.o文件,就是ELF的第一种类…