EEPROM - AT24C02

news/2024/10/18 2:38:17/

文章目录

  • 引言
  • 一、EEPROM简介
  • 二、EEPROM - AT24C02引脚
  • 三、AT24C02的地址组成
  • 四、AT24C02写入操作
    • 4.1 字节写入模式
    • 4.2 页写入模式(高效写入模式)
    • 4.3 写周期
  • 五、AT24C02读出操作
    • 5.1 立即地址读方式
    • 5.2 选择读方式
    • 5.3 连续读方式
  • 六、编程易错点
  • 七、电平的持续时间表

引言

单片机运行时的数据都存在于RAM (随机存储器)中,在掉电后RAM中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM或FLASHROM等存储器来实现。

ROM最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了PROM ,可以自己写入一次,要是写错了,只能换一片。随着不断改进,终于出现了可多次擦除写入的EPROM ,每次擦除要把芯片拿到紫外线上照一下,想- -下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再下一次,这么折腾一天也改不了几次。历史的车轮不断前进,伟大的EEPROM出现了,拯救了一大批程序员,终于可以随意的修改ROM中的内容了。

一、EEPROM简介

EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。

狭义的EEPROM:
这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。

广义的EEPROM-Flash:
Flash属于广义的EEPROM,因为它也是电擦除的ROM。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它Flash。

既然两者差不多,为什么单片机中还要既有Flash又有EEPROM呢?
通常,单片机里的Flash都用于存放运行代码,在运行过程中不能改;EEPROM是用来保存用户数据,运行过程中可以改变,比如一个时钟的闹铃时间初始化设定为12:00,后来在运行中改为6:00,这是保存在EEPROM里,不怕掉电,就算重新上电也不需要重新调整到6:00。

二、EEPROM - AT24C02引脚

在这里插入图片描述

引脚名称功能功能描述
VCC、GND电源、地为芯片提供3.3V电源
A0、A1、A2地址选择用A0,A1,A2设置地址以示区别,最多可挂8个设备,A0,A1,A2悬空为0
WP写保护此引脚接GND允许写操作,接VCC开启写保护
SCL时钟线串行时钟输入
SDA数据线双向串 行数据输入/输出
  • AT24C02内存管理
    AT24C02内存大小为 2K ,即256个字节。 由32页组成,一页8byte

下图是AT24C02 连接 STM32f103的电路图。
在这里插入图片描述

三、AT24C02的地址组成

对于AT24Cxx系列芯片来说,从机地址共有7位,在7位地址中高4位固定为(1010)B,接下来的3位由“A2”、“A1”和“A0”引脚上的电平状态决定。R/W表示读写位,0表示写,1表示读。
在这里插入图片描述

四、AT24C02写入操作

AT24Cxx系列芯片的写操作分为两种模式,第一种模式称为“字节写入模式”,第二种模式称为“页写入模式”。

4.1 字节写入模式

每次写入一个数据都要遵循“起始、寻址、指定地址、写入数据、停止”的过程。
在这里插入图片描述

  • START
    主机给的起始信号。
    在这里插入图片描述
voidI2C_START(void)
{I2C_SDA_DDR(1);	//配置SDA引脚为推挽输出模式SDA_OUT=1;		//SDA引脚置为高电平SCL=1;			//SCL引脚置为高电平delay(1);		//延时等待SDA_OUT=0;		//将SDA置低产生下降沿(产生起始信号)delay(1);		//延时等待SCL=0;			//将SCL置低产生下降沿(允许SDA数据传送)delay(1);		//延时等待
}
  • MSB、LSB
    MSB表示高位,LSB表示低位。由时序图,高位在前,低位在后。
  • DEVICE ADDRESS
    设备器件地址。前4位固定为1010,后三位是A2,A1,A0
  • R/W
    写入/读写位。0表示写入。
  • ACK
    从机的应答。
  • WORD ADDRESS
    字节地址。写入到rom的地址
  • DATA
    数据。写入到rom地址的数据
  • STOP
    停止位。
    在这里插入图片描述
voidI2C_STOP(void)
{I2C_SDA_DDR(1);		//配置 SDA引脚为推挽输出模式SDA_OUT=0;			//SDA引脚置为低电平SCL=0;				//SCL引脚置为低电平delay(1);			//延时等待SCL=1;				//将SCL引脚置高产生上升沿delay(1);			//延时等待SDA_OUT=1;			//将SDA引脚置高产生上升沿(产生终止信号)delay(1);			//延时等待
}

4.2 页写入模式(高效写入模式)

数据遵循“起始、寻址、指定页写首地址、连续写入一页数据、停止”的过程。
在这里插入图片描述

  • 怎么做到连续存数据呢?
    每发送一个字节数据之后AT24C02芯片都会产生一个从机应答并将字节地址低位自动加1,高位保持不变。

  • 页缓冲器”有多大呢?
    AT24C01/02芯片的页缓冲器一次可以写入8个字节.用页方式写入AT24C01/02芯片可一次写入8个字节数据。

  • 要是我写的内容不足一页怎么处理?
    在传输完最后一个数据,直接生成停止位就行。

  • 要是我写的内容比一页还多又怎么办?
    如果在终止信号之前,主机发送的数据超过了8个字节,则地址计数器将自动翻转,先前写入的数据会被覆盖。。所以必须分割数据再依次按页传输,否则会造成数据从头覆盖。

4.3 写周期

  • 注意:页写入是先将页数据存放到一个页缓冲区。数据存放完毕后再写入非易失区域。
    接收到终止信号后,AT24Cxx系列芯片会启动内部写周期将数据写到非易失区域。

AT24Cxx系列芯片把数据成功写入非易尖区域所花费的时间称为“写周期时间”,也就是“tWR”时间,“写周期时间”是指从一个写时序的有效终止信号到芯片内部编程/擦除周期结束的这一段时间,在写周期时间内,总线接口电路禁止,SRA引脚保持为高电平,器件不响应外部操作。这个时间周期的具体取值需要读看朋友们查阅具体芯片的数据手册,以AT24C02这款芯片为例,该时间参数是低于10ms的。

五、AT24C02读出操作

AT24Cxx系列芯片支持三种不同的读操作方式: “立即地址读方式”、“选择读方式”和“连续读方式"。

5.1 立即地址读方式

立即地址读方式是指从当前的地址开始读取数据。其通信时序如下图图所示。
在这里插入图片描述
AT24Cxx系列芯片内部的地址计数器内容为最后操作字节的地址加1,也就是说,如果上次读/写的操作地址为“N”,则“立即读方式”的地址实际上是从“N+1”开始的。
如果“N”等于上限地址(对于AT24C02芯片来说上限地址等于255),则AT24Cxx系列芯片的内部地址计数器将翻转到“0”地址并且继续输出数据。

5.2 选择读方式

该方式允许主机对AT24Cxx系列芯片内部任意地址的数据进行读操作。就是先写好选择的地址,然后再读取地址的内容。其通信时序如下图图所示。
在这里插入图片描述
在通信开始时,主机首先发送起始信号、“从机地址+R/W位0”和欲读取的数据地址。
这里执行1个DUMMY WRITE 伪写操作过程。(什么叫“伪写”呢?意思是说,我们的实际操作是“写操作”,但是我们想实现的功能却是“读操作”)

5.3 连续读方式

连续读方式就是主机接收到一个数据后,回复ACK信号,直到不想接收了,就回复NO ACK 信号。前面的单次读取,主机都是读取一个数据后就回复NO ACK信号。
在这里插入图片描述
在AT24Cxx系列芯片发送完一个8位字节数据之后,主机不是产生“主机非应答”信号,而是产生一个“主机应答”信号来响应从机,意思是“告知”AT24Cxx系列芯片继续送出数据,读者朋友们要特别注意了,“主机应答”信号的意思是主机需要更多的数据,要求从机继续把数据进行送出。每当主机发出“主机应答”信号之后,从机都会产生“从机应答”。如果主机“不想”再读取数据了,就会发送一个“主机非应答”信号以表示读取操作的结束。

六、编程易错点

注意在写入数据时,要留一个写入到非易失区的时间。

void AT24Cxx_WriteNByte(u8*BUF,u8ADDR,u8LEN)
{.....(此处省略具体程序语句)I2C_STOP();//产生I2C通信终止信号delay(100);//延时等待AT24C02渡过“写周期时间”,至少有10ms
}

七、电平的持续时间表

在这里插入图片描述


http://www.ppmy.cn/news/479478.html

相关文章

华为NE40E连接

使用console连接华为NE40E时的配置: 如果使用超级终端,必须将数据控制流选择为“无” 选择前: 图1 选择后: 图2 如果使用SecureCRT,这必须在建立seria时,将流控中的选项全部去掉,不选 选择前&am…

关于ensp的安装、注册激活、镜像导入

一、安装eNSP,注册激活 第一步,我们先把ensp依赖的三个程序装一下,分别是VirtualBox、WinPcap、Wireshark-win64,打开ensp文件夹,分别以管理员身份打开,按着指引安装,完成后先不要打开。 第二步&#xff0…

最新版13.0 eNSP模拟器下载 2020-12-02

eNSP 1.3.00 更新说明: 新增功能 集成了最新版本的USG6000V设备(V500R005C10SPC300)(默认用户名:admin,密码:Admin123)。集成了NE40E、NE5KE、NE9K和CX(V800R011C00SPC607B607)。集成了最新版本的CE6800和CE12800(V800R011C00SPC607B607)。…

华为路由器Eth-Trunk技术

链路聚合 1.华为路由器Eth-Trunk技术简介 juniperleo0人评论2100人阅读2010-10-23 13:37:50 文章出处:www.net1980.com Eth-Trunk接口是一种可以动态创建的接口,该类型接口可以绑定若干物理的以太网接 口作为一个逻辑接口使用。加入到Eth-Trunk接…

eNSP配置包的导入问题

实验背景 下载链接: https://support.huawei.com/enterprise/zh/network-management/ensp-pid-9017384/software/23917110?idAbsPathfixnode01|7919710|21782036|21782103|21782135|9017384 软件版本: eNSP: V100R003C00SPC100 WinPcap: V…

关于软件“eNSP” 1.3.00.100版本交换机(CE)启动异常问题的解决方案(1)

文章目录 前言问题描述原因分析解决方案 前言 最近学院安排了“工程实训”课程,而“工程实训”的内容是关于软件eNSP的使用,但在软件使用的过程中出现了交换机(CE)模块不能正常启动的问题,在经过一系列信息检索之后&am…

华为模拟器ensp学习笔记

CSDN话题挑战赛第2期 参赛话题:学习笔记 目录 前言1️⃣如何注册eNSP设备?2️⃣如何通过SecureCRT登录eNSP模拟设备?结语 🔥推荐阅读:http://t.csdn.cn/nQfIY🔥 前言 记录华为模拟器使用中遇到的问题 1️⃣如何注册…

华为eNsp的环境设置

在下面的环境中: Windows 10 Home Basic 64位简体中文版,版本:10.0.17763.437, 设置 Virtual Box 5.X软件以 Windows 7 兼容模式和管理员身份运行, 设置 ENSP 1.3.00.100(目前的最新版本),以 Windows 7 兼容模式和管理…