详解数据存储芯片AT24C02的应用及编程

一.芯片简介

AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,采用先进CMOS技术实质上减少了器件的功耗。AT24C02有一个8字节页写缓冲器,该器件通过IIC总线接口进行操作,有一个专门的写保护功能。

二.芯片参数

1.特点
  • 工作电压:1.8V~5.5V;
  • 低功耗CMOS技术,工作电流1mA,待机电流1uA;
  • 应用在内部结构:128x8(1K),256x8(2K),512x8(4K),1024x8(8K),2048x8(16K);
  • 二线串行接口,支持标准IIC通信协议;
  • 双向数据传输协议;
  • 兼容 400KHz传输速率(1.8V,2.5V,2.7V,3.6V);
  • 支持硬件写保护功能;
  • 擦出次数可达10000次;
  • 存储数据时间超过100年;
2.引脚定义

在这里插入图片描述
A0-A2引脚为芯片地址,用于多器件工作模式;SDA、SCL分别为IIC通信的数据线和时钟线;WP为写保护引脚,当该引脚接 GND 时,允许正常的读/写操作。当该引脚接 VCC 时,芯片启动写保护功能;

3.参考电路

在这里插入图片描述
A0-A2接到GND上,地址固定为0;SCL、SDA引脚内部为开漏输出,所以需接上拉电阻;WP引脚接GND,表示芯片可读可写。

三.通信接口

1.芯片读写地址

在进行I2C通信时,主机发送启动信号后,再发送寻址信号。器件的地址有7位和10位,以7为地址寻址为例,寻址信号由一个字节构成,高7位为地址位,最低位为方向位,用来表示主机与从器件的数据传输方向;方向位0代表主机接下来对从器件进行写操作;方向位为1,表明主机接下来对器件进行读操作。
在这里插入图片描述
如上图,AT24C02的高4位是固定的,为1010b,低3位则由A0/A1/A2信号线的电平决定。按照我们此处的连接, A0/A1/A2 均为 0,所以 EEPROM 的 7 位设备地址是: 1010 000b ,即 0x50。
由于 I2C 通讯时常常是地址跟读写方向连在一起构成一个 8 位数,且当R/W 位为 0 时,表示写方向,所以加上 7 位地址,其值为“ 0xA0”,常称该值为 I2C 设备的“写地址”;当 R/W 位为 1 时,表示读方向,加上 7 位地址,其值为“ 0xA1”,常称该值为“读地址”。
A0/A1/A2输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。当使用AT24C02 时最大可级联8个器件。如果只有一个AT24C02被总线寻址,这三个地址输入脚(A0、A1、A2 )可悬空(接地也可以)或连接到Vss,如果只有一个AT24C01被总线寻址这三个地址输入脚(A0、A1、A2 )必须连接到Vss。

2.IIC通信

由于51单片机内部无集成IIC控制硬件资源,所以需要软件模拟IIC通信。函数有四个,分别为IIC起始信号、IIC停止信号、IIC读取字节、IIC写入字节等函数。

/*********************IIC.h*************************************/
//--定义使用的IO口--//
sbit I2C_SCL = P2^1;
sbit I2C_SDA = P2^0;//--声明全局变量--//
void I2C_Delay10us();
void I2C_Start();           //起始信号:在I2C_SCL时钟信号在高电平期间I2C_SDA信号产生一个下降沿
void I2C_Stop();            //终止信号:在I2C_SCL时钟信号高电平期间I2C_SDA信号产生一个上升沿
uchar I2C_SendByte(uchar dat, uchar ack);//使用I2c读取一个字节
uchar I2C_ReadByte();       //通过I2C发送一个字节。在I2C_SCL时钟信号高电平期间,保持发送信号I2C_SDA保持稳定/*********************IIC.c*************************************///延时:1us
void I2C_Delay10us()
{uchar a, b;for(b=1; b>0; b--){for(a=2; a>0; a--);}
}// 起始信号:在I2C_SCL时钟信号在高电平期间I2C_SDA信号产生一个下降沿
void I2C_Start()
{I2C_SDA = 1;I2C_Delay10us();I2C_SCL = 1;I2C_Delay10us();//建立时间是I2C_SDA保持时间>4.7usI2C_SDA = 0;I2C_Delay10us();//保持时间是>4usI2C_SCL = 0;			I2C_Delay10us();		
}//终止信号:在I2C_SCL时钟信号高电平期间I2C_SDA信号产生一个上升沿
void I2C_Stop()
{I2C_SDA = 0;I2C_Delay10us();I2C_SCL = 1;I2C_Delay10us();//建立时间大于4.7usI2C_SDA = 1;I2C_Delay10us();		
}//通过I2C发送一个字节。在I2C_SCL时钟信号高电平期间, 保持发送信号I2C_SDA保持稳定
uchar I2C_SendByte(uchar dat, uchar ack)
{uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。			for(a=0; a<8; a++)//要发送8位,从最高位开始{I2C_SDA = dat >> 7;	 //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号dat = dat << 1;I2C_Delay10us();I2C_SCL = 1;I2C_Delay10us();//建立时间>4.7usI2C_SCL = 0;I2C_Delay10us();//时间大于4us		}I2C_SDA = 1;I2C_Delay10us();I2C_SCL = 1;while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低{b++;if(b > 200)	 //如果超过200us没有应答发送失败,或者为非应答,表示接收结束{I2C_SCL = 0;I2C_Delay10us();return 0;}}I2C_SCL = 0;I2C_Delay10us();return 1;		
}// 使用I2c读取一个字节
uchar I2C_ReadByte()
{uchar a = 0,dat = 0;I2C_SDA = 1;			//起始和发送一个字节之后I2C_SCL都是0I2C_Delay10us();for(a=0; a<8; a++)//接收8个字节{I2C_SCL = 1;I2C_Delay10us();dat <<= 1;dat |= I2C_SDA;I2C_Delay10us();I2C_SCL = 0;I2C_Delay10us();}return dat;		
}

三.控制程序

实现了基本IIC通讯函数后,就可对AT24C02进行操作,主要是写入数据和读取数据两个函数。
芯片寻址可对内部256B中的任一个进行读/写操作,其寻址范围为00FF,共256个寻址单位。所以可任意在00FF地址写入我们需要保存的数据。

1.AT24C02写入数据

时序顺序为:发送开始信号,IIC启动->发送器件地址,其中读写标志位为写->发送器件内部存储地址->向器件中写入数据->发送停止信号,IIC停止;

//函数功能		   : 往24c02的一个地址写入一个数据void At24c02Write(unsigned char addr,unsigned char dat)
{I2C_Start();I2C_SendByte(0xa0, 1);//发送写器件地址I2C_SendByte(addr, 1);//发送要写入内存地址I2C_SendByte(dat, 0);	//发送数据I2C_Stop();
}
2.AT24C02读取数据

时序顺序为:发送开始信号,IIC启动->发送器件地址,其中读写标志位为写->发送器件内部->发送开始信号,IIC再次启动->发送器件地址,其中读写标志位为读->从器件读出数据->返回所读取的数据;

// 读取24c02的一个地址的一个数据unsigned char At24c02Read(unsigned char addr)
{unsigned char num;I2C_Start();I2C_SendByte(0xa0, 1); //发送写器件地址I2C_SendByte(addr, 1); //发送要读取的地址I2C_Start();I2C_SendByte(0xa1, 1); //发送读器件地址num=I2C_ReadByte(); //读取数据I2C_Stop();return num;	
}
3.AT24C02读写数据

实现以上的读写功能,就可以使用AT24C02来实现我们需要的功能。功能为:使用按键1,写入num0;按键2,读取num0;按键3,使num0加1;按键4,清零num0;

void main()
{unsigned int num0 = 0,num1 = 0,num2 = 0,n;LcdInit();while(1){if(K1 == 0)		 //按键1按下,将num0写入eeprom{Delay10ms(1);if(K1 == 0){At24c02Write(2,num0);At24c02Write(3,num0);}while((n < 20)&&(K3==0)){n++;Delay10ms(1);	}			n=0;n=0;}if(K2 == 0)		 //按键2按下,读取eeprom数据{Delay10ms(1);if(K2 == 0){num1 = At24c02Read(2);num2 = At24c02Read(3);	}while((n < 20)&&(K2 == 0)){n++;Delay10ms(1);	}			n=0;}			if(K3 == 0)		 //按键3按下,使num0自加1{Delay10ms(1);if(K3 == 0)num0++;while((n < 50)&&(K3 == 0)){n++;Delay10ms(1);	}			n=0;if(num0==256)num0=0;}if(K4 == 0)		 //按键4按下,清零{Delay10ms(1);if(K4 == 0)num0 = 0;while((n < 50) && (K4 == 0)){n++;Delay10ms(1);	}			n=0;}LCD_Display();	}
}								

如需AT24C02相关资料及例程, 请关注公众号,首页回复AT24C02获取资料
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存算一体芯片技术及其最新发展趋势(陈巍谈芯)

相关推荐 陈巍谈芯&#xff1a;7.2 RRAM模拟存内计算 《先进存算一体芯片设计》节选https://zhuanlan.zhihu.com/p/474261353 陈巍谈芯&#xff1a;存算一体技术是什么&#xff1f;发展史、优势、应用方向、主要介质&#xff08;收录于存算一体芯片赛道投资融资分析&#xff…

纯国产服务器芯片以芯片堆叠技术提升性能,进一步替代美国芯片

国产芯片替代美国芯片已是当下的主流&#xff0c;而在事关信息安全的服务器芯片方面&#xff0c;中国又有一家芯片企业推出了服务器芯片&#xff0c;这次是真正纯国产芯片&#xff0c;从芯片架构、芯片制造都实现国产化&#xff0c;辅以芯片叠加技术提升芯片性能&#xff0c;达…

分享一款国产并口PSRAM存储芯片EMI164NA16LM

EMI164NA16LM该设备是一个集成的存储器设备&#xff0c;其中包含64Mbit静态随机存取存储器&#xff0c;使用自刷新DRAM阵列由16位组织为4M。模具具有单独的电源轨&#xff0c;VCCQ和VSSQ&#xff0c;用于从设备核心的单独电源运行。 特征 •电源 -VCC和VCCQ电压&#xff1a;3.…

存储芯片行业信息汇总

1、存储芯片的分类 RAM&#xff08;Random Access Memory&#xff09;随机存储器&#xff0c;我们在日常生活中经常会听到RAM这个单词。比如手机6G RAM128G ROM&#xff0c;对手机比较了解的人都知道RAM是代表运行内存&#xff0c;运行内存越大&#xff0c;可以打开的应用就越多…

汽车行业数据存储越发复杂?群晖备份存储方案为您支招

信息化正在逐渐渗透到各行各业的生产应用中&#xff0c;汽车行业也不例外。数据作为数字经济时代新型生产要素&#xff0c;已成为汽车行业数字化转型的核心资产。而保障企业重要数据的安全也就成为了管理者关注的重要问题。 但是&#xff0c;在智能化、数字化大潮下&#xff0c…

pycharm反应特别慢的可能原因

下面这里是很多东西的时候&#xff0c;一般显示出来的矩阵还特别大&#xff0c;就会卡。如果多开了几个pycharm窗口&#xff0c;其中一个数据显示的多&#xff0c;其他的窗口也会卡。

计算机切换器鼠标反应慢,解决鼠标反应迟钝与反应慢故障的方法

鼠标反应迟钝与反应慢故障解决方法 在这里&#xff0c;就是向大家介绍自己可以通过一些小小的调整&#xff0c;来解决的鼠标失灵现象&#xff0c;如果是鼠标按键失灵或者连接线断开等方面的损失&#xff0c;就只有换新的鼠标了&#xff0c;小编也就无能为力。 故障一&#xff1…

计算机如何解决卡顿问题,电脑反应慢怎么办?电脑卡顿处理方法

原标题&#xff1a;电脑反应慢怎么办&#xff1f;电脑卡顿处理方法 电脑用的时间长了&#xff0c;系统运行速度和开机速度会变慢。 是什么原因导致电脑变慢呢? 临时文件&#xff0c;注册表&#xff0c;磁盘碎片&#xff0c;安装软件直接默认安装到C盘(系统盘)都会导致电脑变慢…

git bash反应慢解决办法

方法来源于其他网友&#xff0c;感谢其他网友的尝试和分享。 方法众多&#xff0c;我试了一个比较有效的方法就是不使用git bash&#xff0c;而是使用没有爆露的bash.exe文件。 我们在windows下面一般用git bash的方法就是&#xff0c;在所在文件夹右键&#xff0c;选择git b…

电脑卡顿反应慢怎么处理?电脑提速,4个方法!

案例&#xff1a;电脑卡顿反应慢怎么处理&#xff1f; 【快帮帮我&#xff01;我的电脑现在越用越卡了&#xff0c;有时候光是打开一个文件都要卡好几分钟&#xff0c;我真的太难了&#xff0c;有什么可以加速电脑反应速度的好方法吗&#xff1f;万分感谢&#xff01;】 随着…

计算机老是卡顿怎么解决,电脑反应太慢怎么处理_电脑卡顿什么原因-win7之家

电脑使用久了&#xff0c;电脑的垃圾文件就会有很多&#xff0c;这就是会导致电脑卡顿反应慢的原因&#xff0c;还有上网是浏览的记录它一直会保存你之前浏览的网页&#xff0c;也会导致电脑卡顿反应慢&#xff0c;那么电脑反应吗卡顿的话我们要怎么处理呢&#xff0c;下面小编…

打开计算机文件反应慢怎么解决方法,电脑反应慢怎么解决

相信很多用户使用电脑久了之后就会发现电脑反应变慢了&#xff0c;其实这是因为电脑硬件老化问题提前进入衰竭期&#xff0c;这个原因是无法避免的&#xff0c;还有另外一个原因就是系统遗留的各种垃圾文件和软件导致的。那么电脑反应慢怎么解决呢?下面小编就为大家整理出加快…

电脑卡顿反应慢怎么处理?可试试这几种电脑提速方法!

随着我们使用电脑的时间变长&#xff0c;电脑卡顿的问题出现也变得很常见&#xff0c;这可能会影响我们的工作效率和用户体验。电脑卡顿反应慢怎么处理呢&#xff1f; 电脑为什么会出现卡顿呢&#xff1f;电脑卡顿反应慢是什么原因&#xff1f;其实&#xff0c;可能由多种因素引…

电脑卡顿反应慢怎么办?这几招教给你!

电脑使用时间长了&#xff0c;电脑中的各种缓存文件也会就越来越多&#xff0c;这些文件的堆积会占用电脑内存从而导致电脑变得卡顿。还有在电脑中安装了许多软件&#xff0c;若这些软件都设置为开机自启动&#xff0c;这会占用大量的电脑内存&#xff0c;影响电脑的运行速度&a…

电脑卡顿反应慢解决办法

第一种方法 磁盘清理 第二种方法 视觉效果调整为最佳性能 第三种方法 将保存新内容的地方都改为D盘&#xff0c;不放在c盘 第四种方法 优化磁盘和关闭每周磁盘优化计划 > 5.最后时刻优化清理电脑运行内存,建议使用电脑管家的加速球 > 6.多清理电脑上的垃圾文件,不玩…

电脑反应慢是什么原因?电脑反应慢怎么快速解决

电脑反应慢是一个普遍存在的问题&#xff0c;直接影响我们的用户体验&#xff0c;如果出现在关键时刻&#xff0c;还会给我们的生活造成诸多不便。本篇文章就为你研究一番这个问题的原因和解决方法。 电脑反应慢的主要原因 最主要的原因出在电脑内存、电脑启动项、C盘这几个…

打开计算机文件反应慢怎么解决方法,电脑反应慢怎么办?常见原因与解决办法...

电脑用的时间长了&#xff0c;系统运行速度和开机速度会变慢。 是什么原因导致电脑变慢呢? 临时文件&#xff0c;注册表&#xff0c;磁盘碎片&#xff0c;安装软件直接默认安装到C盘(系统盘)都会导致电脑变慢。 电脑变慢了怎么处理呢? 一、删除不需要的软件 在电脑上“卸载程…

​腾讯定性微信QQ故障为一级事故,总办成员遭处罚;OpenAI CEO考虑在日本开设办事处;OpenBSD 7.3发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

【2023新书】《ChatGPT在做什么…以及它为什么好使》

来源&#xff1a;专知 本文为书籍介绍&#xff0c;建议阅读5分钟 沃尔夫勒姆不但讲清楚了GPT的底牌和命门&#xff0c;而且提出了一个可谓惊世骇俗的洞见。 精英日课解读的2023年3月9日刚刚出版的新书《ChatGPT在做什么…以及它为什么好使》&#xff08;What Is ChatGPT Doing …

Rocket之加速器

文章目录 RoCC简介riscv-toolspk 加速器fpga-zynq测试测试样例测试结果 参考文献 RoCC简介 Rocket Custom Coprocessor riscv-tools 由于custom指令并不是标准指令集的一部分&#xff0c;所以最新的risc-tools&#xff08;汇编器&#xff09;不支持直接写custom0指令。riscv-t…