24系列EEPROM的应用
24C02读写程序
HT49 MCU系列单片机读写HT24系列的EEPROM应用范例HT49 MCU系列单片机读写HT24系列的EEPROM应用范例文件编码:HA0017s简介:HT24系列的EEPROM是通过I2C协议控制其读写的。
HT49系列单片机的接口部分是简单I/O 口,可以用来很方便地采用I2C协议控制周边器件。
HT24系列的EEPROM总共8个管脚,三个为芯片地址脚A0、A1、A2,在单片机对它进行操作时,从SDA输入A0、A1、A2数据和芯片外部A0、A1、A2所接地址需一一对应。
一个为芯片写保护脚WP,WP脚接低电平时,芯片可进行读写操作;WP脚接高时,芯片只可进行读,不可进行写。
另外两个管脚为电源脚VCC,VSS。
用单片机对HT24系列的EEPROM进行控制时,HT24系列的EEPROM的外部管脚VCC、VSS、WP、A0、A1、A2根据需要,对应接上,SDA、SCL接到单片机控制脚上。
引脚名称I/O 功能描述A0~A2 I地址输入VSS I电源负极输入SDA I/O串行数据输入/输出SCL I串行数据传送时钟信号输入WP I写保护VCC I电源正极输入HT24系列的EEPROM根据型号不同,EEPROM的容量大小不同,当EEPROM的空间大于1页(256bytes)时,即大于2048bits,则HT49 MCU需要控制A0、A1、A2来确定写HT24系列的EEPROM的第几页,HT24系列的EEPROM空间大小如下表所示:型号引脚A0、A1及A2使用方法容量大小HT24LC02 A0、A1、A2引脚作为器件地址输入,从SDA输入A0、A1、A2数据和芯片引脚A0、A1、A2所接状态需一一对应2K(256×8)HT24LC04 A1、A2引脚作为器件地址输入,从SDA输入A1、A2数据和芯片引脚A1、A2所接状态需一一对应,A0引脚浮空4K(512×8,2pages)HT24LC08 A2引脚器件地址输入,从SDA输入A2数据和芯片引脚A2所接状态需一一对应,其余引脚浮空8K(1024×8,4pages)HT24LC16 A0、A1、A2全部浮空,不必接16K(2048×8,8pages)HT49 MCU系列单片机读写HT24系列的EEPROM应用范例程式说明:本文是以HT49R30A-1控制HT24LC04为例的。
芯片24C64中文资料
EEPROM是"Electrically Erasable Programmable Read-only"(电可擦写可编程只读存储器)的缩写,EEPROM在正常情况下和EPROM一样,可以在掉电的情况下保存数据,所不同的是它可以在特定引脚上施加特定电压或使用特定的总线擦写命令就可以在在线的情况下方便完成数据的擦除和写入,这使EEPROM被用于广阔的的消费者范围,如:汽车、电信、医疗、工业和个人计算机相关的市场,主要用于存储个人数据和配置/调整数据。
EEPROM又分并行EEPROM和串行EEPROM,并行EEPROM器件虽然有很快的读写的速度,但要使用很多的电路引脚。
串行EEPROM器件功能上和并行EEPROM基本相同,提供更少的引脚数、更小的封装、更低的电压和更低的功耗,是现在使用的非易失性存储器中灵活性最高的类型。
串行EEPROM按总线分,常用的有I2C,SPI,Microwire总线。
本文将介绍这三种总线连接单片机的编程方法。
I2C总线I2C总线(Inter Integrated Circuit内部集成电路总线)是两线式串行总线,仅需要时钟和数据两根线就可以进行数据传输,仅需要占用微处理器的2个IO引脚,使用时十分方便。
I2C总线还可以在同一总线上挂多个器件,每个器件可以有自己的器件地址,读写操作时需要先发送器件地址,该地址的器件得到确认后便执行相应的操作,而在同一总线上的其它器件不做响应,称之为器件寻址,这个原理就像我们打电话的原理相当。
I2C总线产生80年代,由PHLIPS公司开发,早期多用于音频和视频设备,如今I2C总线的器件和设备已多不胜数。
最常见的采用I2C总线的EEPROM也已被广泛使用于各种家电、工业及通信设备中,主要用于保存设备所需要的配置数据、采集数据及程序等。
生产I2C总线EEPROM的厂商很多,如ATMEL、Microchip公司,它们都是以24来开头命名芯片型号,最常用就是24C系列。
AT24C1024介绍
AT24C10242 线串行EEPROM特性低电压操作:2.7(Vcc=2.7V to 5.5V)内部组织:131,072*8 位=1M2 线串行接口施密特触发器,噪声抑制滤波输入双向数据传输协议时钟速率:400kHz(2.7V)和1MHz(5V) 硬件写保护引脚和软件数据保护256 字节页写模式(允许部分页面写入)随机和顺序读写模式自定义写周期(5ms)高可靠性:耐久力:写周期/页100,000 次数据保留:40 年8 引脚PDIP,8 引脚有铅SOIC 封装,8 引脚无铅阵列和8 引脚球状dBGA 封装描述AT24C1024 提供1,048,567 位的串行可电擦除和可编程只读存储器(EEPROM),它的每8 位组成一个字节,共131,072 个字节。
该设备的级联功能允许多达2 个设备共亨同一条2- 线总线。
该设备适合用于许多工业和商业,应用必要的低功耗和低电压的操作。
该器件可提供节省空间的8 引脚PDIP,8 引脚有铅SOIC 封装,8 引脚无铅阵列和8 引脚球状dBGA 封装。
另外,这一系列产品允许在2.7V(2.7V~5.5V)下工作。
绝对最大额定值:工作温度:-55~+125存储温度:-65~+150任何引脚的对地电压:-1.0V~+7.0V最大工作电压:6.25V 直流输出电流:5.0mA注意:强制高出“绝对最大额定值”可能导致设备的永久损坏。
设备的压力等级和功能操作只有在这些或超出本规范所标明的其他任何条件下是不允许的。
长时间工作在绝对最大额定值的条件下可能影响设备的可靠性。
引脚描述:串行时钟(SCL):SCL 的输入是在时钟的上升沿数据进入每个EEPROM 设备和下降沿数据输出每个设备。
串行数据(SDA):SDA 引脚是双向串行数据传输的。
这个引脚是漏极输出的,可以与其它的漏极开路或集电极开路的设备线或。
器件/ 页地址(A1 ):A1 引脚是设备的输入地址,它能够通过导线与不兼容的设备AT24C128/256/512 连接。
数据存储AT24Cxx及其应用
AT24CXX电气特性
AT24CXX电气特性
ቤተ መጻሕፍቲ ባይዱ 100KHz参数分析
• f=100KHz=0.1MHz • t=1/0.1us=5us(一个高电平持续的时间+一 个低电平持续的时间) • scl的高低电平持续时间各为3us • scl为高电平时,sda数据线电平不能变化 (否则就是开始信号或停止信号);scl为 低电平时,sda数据线电平才能变化(即此 时给sda赋需要发送的值)。
I2C总线的信号类型
• 开始信号:SCL为高电平时,SDA由高电 平向低电平跳变,开始传送数据。 • 结束信号:SCL为高电平时,SDA由低电 平向高电平跳变,结束传送数据。
I2C总线的信号类型
• 位的传输 SDA 线上的数据必须在时钟的高电平周期 保持稳定,数据线的高或低电平状态只有 在SCL 线的时钟信号是低电平时才能改变。
SDA SDA
存储器
SCL
SCL
SDA SCL
SDA
SDA
SCL
SCL
A/D
LED
SCL
SCL
Vcc
I2C (I2C、 IIC )总线概述
R1 R2
单片机 键盘 D/A
SDA
SDA
SDA SDA
存储器
SCL
SCL
SDA SCL
SDA
SDA
SCL
SCL
A/D
LED
• 其中,I2C总线的SCL和SDA端口(开漏极,线与)在使用时 必须连接上拉电阻。I2C总线的传输速率可以支持100khz和 400khz两种,对于100khz的速率一般采用10k欧姆的上拉电 阻,对于400khz的速率一般采用2k欧姆的上拉电阻。
EEPROM
嵌入式系统中EEPROM文件系统的设计与实现彭晓锋北京邮电大学电信工程学院,北京(100876)摘要:AT24CXX系列EEPROM在嵌入式领域有着广泛的运用。
本文参考微机文件系统的原理实现能兼容AT24C08-AT24C1024的简单文件系统,实验结果证明本系统高效可行。
关键词:EEPROM, 文件系统,嵌入式1.引言随着大量嵌入式设备的出现,在嵌入式系统中用于存储数据的EEPROM因其简单、方便、可靠的性能和低廉的价格而被广为使用。
当今社会嵌入式系统无所不在,各种嵌入式设备品种繁多,差别巨大。
因此各公司也推出多种不同容量不同型号的EEPROM适应多样的市场应用。
人们一方面希望能像管理大容量存储器(如硬盘,FLASH等)中数据一样简单便捷的操作EEPROM中的数据(包括打开、关闭、读写文件等),同时也希望这种文件系统能兼容不同容量、型号,具有较强的通用性。
而对于采用两线IIC总线读写方式[1]的EEPROM来说,无法使用类似与FLASH所支持的TFFS之类的文件系统,本文参照上述思想,实现了一种能兼容AT24C08-AT24C1024类似于文件系统的用于管理EEPROM中数据的方法,并在实践项目中得到良好运用。
2.AT24CXX系列EEPROM简介AT24CXX系列是ATMEL公司生产的串行电可擦的可编程存储器,它采用8引脚封装,具有可掉电记忆,结构紧凑、存储容量大等特点,可以在2线总线上并接多片芯片,适用于具有大容量数据存储要求的嵌入式系统[2]。
ⅰ)封装及管脚说明AT24C08-AT24C1024的封装如图1所示(对不同型号A0-A2相应改为NC,详见表1),各引脚的功能如下:⑴ A0、A1、A2:器件地址(device address)。
IIC串行总线需连接多个EEPROM芯片时,可用A0、A1、A2来区分各芯片,悬空时为0。
⑵ SDA:I2C 串行数据。
图1. A T24CXX系列EEPROM封装⑶ SCL:I2C 串行时钟。
EEPROM存储芯片24C02
EEPROM存储芯⽚24C021、24C02简介 24C02是⼀个2Kbit的串⾏EEPROM存储芯⽚,可存储256个字节数据。
⼯作电压范围为1.8V到6.0V,具有低功耗CMOS技术,⾃定时擦写周期,1000000次编程/擦除周期,可保存数据100年。
24C02有⼀个16字节的页写缓冲器和⼀个写保护功能。
通过I2C总线通讯读写芯⽚数据,通讯时钟频率可达400KHz。
可以通过存储IC的型号来计算芯⽚的存储容量是多⼤,⽐如24C02后⾯的02表⽰的是可存储2Kbit的数据,转换为字节的存储量为2*1024/8 = 256byte;有⽐如24C04后⾯的04表⽰的是可存储4Kbit的数据,转换为字节的储存量为2*1024/8 = 512byte;以此来类推其它型号的存储空间。
24C02的管脚图如下: VCC和VSS是芯⽚的电源和地,电压的⼯作范围为:+1.8V~+6.0V。
A0、A1、A2是IC的地址选择脚。
WP是写保护使能脚。
SCL是I2C通讯时钟引脚。
SDA是I2C通讯数据引脚。
2、24C02的设备地址和写保护功能 I2C主机在与24C02通讯时,需要发送⼀个设备地址进⾏寻址,在I2C总线上,每⼀个从机设备的地址都是唯⼀的。
24C02的设备地址包含两部分,第⼀部分是bit7~bit4是固定的“1010”,第⼆部分bit3~bit1位由A2、A1、A0组成。
主机在与24C02进⾏通讯时,除了发送设备地址还需要发送数据的读写⽅向位R/W,24C02的是设备地址与R/W位组成了⼀个字节的数据。
如下图: 上图列出了⼏个存储IC的设备地址与R/W位组成的字节。
由图中可以看到,存储IC地址的bit7~bit4位固定为“1010”;bit3~bit1位由A2、A1、A0引脚的电平状态决定,如果Ax接的是电源(⾼电平),那么Ax=1,如果Ax接的是地,那么Ax=0,即由A2、A1、A0可以组合成8种设备地址,也就是说在同⼀个I2C总线上可以同时挂载8个24C02芯⽚。
基于Proteus的IIC器件AT24C1024的应用
基于Proteus的IIC器件AT24C1024的应用作者:袁易君来源:《中国新技术新产品》2008年第24期摘要:本文采用软件仿真平台Proteus介绍了AT24C1024 EEPROM的使用及其特点,以及在具有DS1302时钟芯片、DS18b20温度传感器的具体应用系统中的使用,本系统对每隔一段时间的温度进行了存储。
关键词:Proteus;EEPROM;DS18b20;温度传感器电可擦除可编程EEPROM 在应用系统中既可由软件对其内容进行随机读写,又可在芯片断电的情况下长时间保存信息, 因此兼备了RAM 和ROM 的特点。
EEPROM 有串行和并行两大类,并行EEPROM 存储容量较大,读写方法简单,但价格较高,适用于信息量较多的场合。
串行EEPROM结构简单紧凑,价格低廉,但其读写方法复杂,存储单元较小,一般用于掉电情况下需要保存或一些数据需要在线修改的场合,这类数据不多却很重要,若使用常规的RAM芯片,就必须附带一套性能可靠的掉电保护系统,这不仅增加了线路设计的复杂性,同时也给设备的运行和维护带来了诸多不便。
同时Proteus软件是一款单片机软硬件设计仿真平台,能实时仿真多种单片机芯片,如51单片机系列、AVR单片机系列、PIC单片机系列及Arm单片机系列等,可减少学习单片机的成本,又可达到良好的学习效果。
124C系列串行EEPROM介绍24C系列串行EEPROM除具有一般串行EEPROM 的体积小、功耗低、工作电压允许范围宽等特点外,还具有型号多、容量大、二总线协议、占用I/ O 口线少、容量扩展配置极其灵活方便、读写操作相对简单等特点。
本系统中使用的是24C1024(1024kb) ,生产工艺是CMOS 工艺,工作电压在1.8~5.5V 之间,24C系列有两种封装形式:8 脚封装和14 脚封装。
我国目前开发用量最多的封装形式是8脚PDIP 封装,8 脚PDIP封装中A0 、A1 、A2 为器件地址选择位,这3 个引脚配置成不同的编码值,在同一串行总线上最多可扩展8 片同一容量或不同容量的24C 系列串行EEPROM 芯片。
EEPROM---AT24Cxx应用介绍
EEPROM---AT24Cxx应⽤介绍结论:1、读写AT24CXX芯⽚,根据容量有多种⽅式:⼀、容量为AT24C01~AT24C16,⾸先发送设备地址(8位地址),再发送数据地址(8位地址),再发送或者接受数据。
⼆、AT24C32/AT24C64~AT24C512,⾸先发送设备地址(8位地址),再发送⾼位数据地址,再发送地位数据地址,再发送或者接受数据。
三、容量AT24C1024的芯⽚,是把容量⼀和容量⼆的⽅法结合,设备地址中要⽤⼀位作为数据地址位,存储地址长度是17位。
2、它的设备地址根据容量不同有区别: 1)、AT24C01~AT24C16:这⼀类⼜分为两类,分别为AT24C01/AT24C02和AT24C04~AT24C16;他们的设备地址为⾼7位,低1位⽤来作为读写标⽰位,1为读,0为写。
*1*、AT24C01/AT24C02。
AT24C01/AT24C02的A0、A1、A2引脚作为7位设备地址的低三位,⾼4为固定为1010B,低三位A0、A1、A2确定了AT24CXX的设备地址,所以⼀根I2C线上最⼤可以接8个AT24CXX,地址为1010000B~1010111B。
*2*、AT24C04~AT24C16的 A0、A1、A2只使⽤⼀部分,不⽤的悬空或者接地(数据⼿册中写的是悬空不接)。
举例:AT24C04只⽤A2、A1引脚作为设备地址,另外⼀位A0不⽤悬空,发送地址中对应的这位(A0)⽤来写⼊页寻址的页⾯号,⼀根I2C线上最⼤可以接4个,地址为101000xB~101011xB 2)、AT24C32/AT24C64:和AT24C01/AT24C02⼀样,区别是,发送数据地址变成16位。
注意事项:对AT24C32来说,WP置⾼,则只有四分之⼀受保护,即0x0C00-0x0FFF。
也就是说保护区为1KBytes。
对于低地址的四分之三,则不保护。
所以,如果数据较多时,可以有选择地存储。
24C02资料 (2)
一、EPROM与EEPROM:EPROM(Erasable Programmable Read Only Memory),中文含意为“可擦除可编程只读存储器”。
它是一种可重写的存储器芯片,并且其内容在掉电的时候也不会丢失;换句话说,它是非易失性的。
它通过EPROM编程器进行编程,EPROM编程器能够提供比正常工作电压更高的电压对EPROM编程。
一旦经过编程,EPROM只有在强紫外线的照射下才能够进行擦除。
为了进行擦除,EPROM的陶瓷封装上具有一个小的石英窗口,这个石英窗口一般情况下使用不透明的粘带覆盖,当擦除时将这个粘带揭掉,然后放置在强紫外线下大约20分钟。
主要IC有27XX系列和27CXX系列。
EEPROM(electrically erasable, programmable, read-only )是一种电可擦除可编程只读存储器,并且其内容在掉电的时候也不会丢失。
在平常情况下,EEPROM与EPROM一样是只读的,需要写入时,在指定的引脚加上一个高电压即可写入或擦除,而且其擦除的速度极快!通常EEPROM芯片又分为串行EEPROM和并行EEPROM两种,串行EEPROM在读写时数据的输入/输出是通过2线、3线、4线或SPI 总线等接口方式进行的,而并行EEPROM的数据输入/输出则是通过并行总线进行的。
主要IC有28XX系列。
二、24c02芯片硬件介绍:1、引脚说明:A0,A1,A2——地址输入引脚,走位硬件寻址的依据,同种芯片可同时连接8片(2^3);Vcc,Gnd——电源,接地引脚,1.8-5.5vWp——写保护,当Wp接地时,允许对器件的正常读写操作;当Wp接高电平时,写保护,只能进行读操作。
SDA——串行地址/数据输入/输出端口,双向传输,漏极开路,需外接上拉电阻到Vcc(典型阻值为10k)。
SCL——串行时钟输入,高低电平不同状态与SDA配合,执行不同的命令。
2、存储结构:24c02的容量是2k,256字节。
EEPROM
24系列EEPROM的应用数据存储作为一种非易失性存储器(NVM),24系列EEPROM使用的很普遍,一般作为数据量不太大的数据存储器。
下面总结一下其应用的一些要点。
从命名上看,24CXX中XX的单位是kbit,如24C08,其存储容量为8k bit,即1k Byte=1024Byte。
一、工作条件1.工作电压(VCC)24CXX:4.5V-5.5V24CXX-W:2.5V-5.5V24CXX-R:1.8V-5.5V2.输入电平定义(VIH,VIL)VIH:0.7VCC-VCC+1VIL:-0.45V-0.3VCC二、硬件连接1.上拉电阻RP的取值由于I2C总线电容要满足小于400pf的条件。
从以下波形可以看出,上拉电阻越大,总线的电容越小,可以实现的数据传输率就越大,可达400khz。
2.写保护脚芯片写保护脚是高电平有效,即WP接高电平时禁止写入3.地址脚24C01/24C02三个地址脚(E0,E1,E2)都有效,24C04只有E2,E1有效,24C08只有E2有效,24C16三个地址脚都无效,如下图所示,所谓地址脚无效是指不需要接入电路中(NC,not connected),其对应的地址位要用来表示要操作的字节的高位地址。
24C32/24C64三个地址脚都有效;24C128/24C256/24C512的地址脚E1和E0有效,其余为NC;24C1024的地址脚E1有效,其余为NC。
三、寻址方式1.器件地址当总线上连接多个I2C器件时,需要对器件进行寻址。
器件地址如下表所示,其中E2,E1,E0是指三个引脚的状态,取决于是接地还是接高电平,R/W为1则为读操作,为0则为写操作。
A8,A9,A10,A16指的是所要操作的字节地址的高位,后面会提到。
芯片bit7bit6bit5bit4bit3bit2bit1bit024C01/02/211010E2E1E0R/W24C041010E2E1A8R/W24C081010E2A9A8R/W24C161010A10A9A8R/W24C32/641010E2E1E0R/W24C128/256/51210100E1E0R/W24C102410100E1A16R/W2.字节地址在对芯片内的某一字节或一连续地址进行读写操作时,需要制定其地址或首字节的地址,不同芯片地址有不同的表示方式,如下表所示,其中有些芯片的地址位的高位存储在器件地址中。
24C64中文资料
EEPROM是"Electrically Erasable Programmable Read-only"(电可擦写可编程只读存储器)的缩写,EEPROM在正常情况下和EPROM一样,可以在掉电的情况下保存数据,所不同的是它可以在特定引脚上施加特定电压或使用特定的总线擦写命令就可以在在线的情况下方便完成数据的擦除和写入,这使EEPROM被用于广阔的的消费者范围,如:汽车、电信、医疗、工业和个人计算机相关的市场,主要用于存储个人数据和配置/调整数据。
EEPROM又分并行EEPROM和串行EEPROM,并行EEPROM器件虽然有很快的读写的速度,但要使用很多的电路引脚。
串行EEPROM器件功能上和并行EEPROM基本相同,提供更少的引脚数、更小的封装、更低的电压和更低的功耗,是现在使用的非易失性存储器中灵活性最高的类型。
串行EEPROM按总线分,常用的有I2C,SPI,Microwire总线。
本文将介绍这三种总线连接单片机的编程方法。
I2C总线I2C总线(Inter Integrated Circuit内部集成电路总线)是两线式串行总线,仅需要时钟和数据两根线就可以进行数据传输,仅需要占用微处理器的2个IO引脚,使用时十分方便。
I2C总线还可以在同一总线上挂多个器件,每个器件可以有自己的器件地址,读写操作时需要先发送器件地址,该地址的器件得到确认后便执行相应的操作,而在同一总线上的其它器件不做响应,称之为器件寻址,这个原理就像我们打电话的原理相当。
I2C总线产生80年代,由PHLIPS公司开发,早期多用于音频和视频设备,如今I2C总线的器件和设备已多不胜数。
最常见的采用I2C总线的EEPROM也已被广泛使用于各种家电、工业及通信设备中,主要用于保存设备所需要的配置数据、采集数据及程序等。
生产I2C总线EEPROM的厂商很多,如ATMEL、Microchip公司,它们都是以24来开头命名芯片型号,最常用就是24C系列。
EEPROM_AT24C02_笔记
AT24C02 使用
一、芯片介绍:
1,2,3 脚(A0 、A1 、A2 ) :可编程地址输入端 4(GND) :电源地 5(SDA)serial date:串行数据输入/输出端 6(SCA)serial clock input :串行时钟输入端 7(WP )write protect:写保护输入端,用于硬件数据保护。当期为低电平时,可对整 个存储器进行正常的读/写操作;当为高电平时,存储器具有写保护功能,但读操作不 受影响。 8(Vcc) :电源正端
}
二、存储结构与寻址
AT24C02 的存储容量为 2KB ,内部分成 32 页,每页 8B,共 256 页。操作时有两种寻芯片地址为 1010, 其地址控制格式为 1010A2A1A0R/W 。
其中 A2 、A1 、A0 为可编程地址选择位。A2 、A1、A0 引脚接高、低电平得到 确定的三位编码,与 1010 形成 7 位编码,即为该器件的地址码。R/W 位芯片 读写控制位,该位为 0,表示对芯片进行写操作;该位为 1,表示对芯片进行读 操作。 (2) 片内子地址寻址:芯片寻址可对内部 256B 中的任一个进行读/写操作,其寻址 范围为 00~FF,共 256 个寻址单位。
(2)指定地址连续读,此种方式的读地址控制与前面指定地址读相同,单片机接 收到每一个字节数据后应做出应答,只要 EEPROM 检测到应答信号,其内部的地址寄 存器就自动加 1,指向下一个单元,并顺序将指向的单元的数据送到 SDA 串行数据线 上。 当需要结束读操作时, 单片机接收到数据后在需要应答的时刻发送一个非应答信号, 接着再发送一个停止信号即可。这种读操作的数据帧格式如图 8.3.8 所示。
芯片操作时序图:对应后面的程序理解
总线时序图
AT24Cxx系列EEPROM应用笔记
4.1.开始 START CONDITION
主器件通过发送一个起始信号启动发送过程。这个信号的时序要求是当 SCL 为高时,SDA 出现一个由低到高的跳变。时序图如下(图 3)。
图 4 开始时序
4.2.应答信号 ACKNOWLEDGE
I²C 总线数据传送时,每成功地传送一个字节数据后,接收器都必须产生一个应答信号。 应答的器件在第 9 个时钟周期时将 SDA 线拉低(发送一个 0),表示其已收到一个 8 位数据。 AT24Cxx 在接收到起始信号和从器件地址之后响应一个应答信号,如果器件已选择了写操作, 则在每接收一个 8 位字节之后响应一个应答信号。
-6-
PDF 文件使用 "pdfFactory Pro" 试用版本创建
7. 读操作
AT24Cxx 系列 EEPROM 应用笔记
对 AT24Cxx 读操作的初始化方式和写操作时一样,仅把 R/W 位置为 1,有三种不同的读操 作方式:读当前地址内容、读随机地址内容、读顺序地址内容。
AT24Cxx 系列 EEPROM 是由美国 Mcrochip 公司出品,1-512K 位的支持 I2C 总线数据传送 协议的串行 CMOS E2PROM,可用电擦除,可编程自定时写周期(包括自动擦除时间不超过 10ms, 典型时间为 5ms)的。串行 E2PROM 一般具有两种写入方式,一种是字节写入方式,还有另一 种页写入方式。允许在一个写周期内同时对 1 个字节到一页的若干字节的编程写入,1 页的大小 取决于芯片内页寄存器的大小。其中,AT24C01 具有 8 字节数据的页面写能力,AT24C02/04/08/16 具有 16 字节数据的页面写能力,AT24C32/64 具有 32 字节数据的页面写能力。
芯片24C64中文资料
EEPROM是"Electrically Erasable Programmable Read-only"(电可擦写可编程只读存储器)的缩写,EEPROM在正常情况下和EPROM一样,可以在掉电的情况下保存数据,所不同的是它可以在特定引脚上施加特定电压或使用特定的总线擦写命令就可以在在线的情况下方便完成数据的擦除和写入,这使EEPROM被用于广阔的的消费者范围,如:汽车、电信、医疗、工业和个人计算机相关的市场,主要用于存储个人数据和配置/调整数据。
EEPROM又分并行EEPROM和串行EEPROM,并行EEPROM器件虽然有很快的读写的速度,但要使用很多的电路引脚。
串行EEPROM器件功能上和并行EEPROM基本相同,提供更少的引脚数、更小的封装、更低的电压和更低的功耗,是现在使用的非易失性存储器中灵活性最高的类型。
串行EEPROM按总线分,常用的有I2C,SPI,Microwire总线。
本文将介绍这三种总线连接单片机的编程方法。
I2C总线I2C总线(Inter Integrated Circuit内部集成电路总线)是两线式串行总线,仅需要时钟和数据两根线就可以进行数据传输,仅需要占用微处理器的2个IO引脚,使用时十分方便。
I2C总线还可以在同一总线上挂多个器件,每个器件可以有自己的器件地址,读写操作时需要先发送器件地址,该地址的器件得到确认后便执行相应的操作,而在同一总线上的其它器件不做响应,称之为器件寻址,这个原理就像我们打电话的原理相当。
I2C总线产生80年代,由PHLIPS公司开发,早期多用于音频和视频设备,如今I2C总线的器件和设备已多不胜数。
最常见的采用I2C总线的EEPROM也已被广泛使用于各种家电、工业及通信设备中,主要用于保存设备所需要的配置数据、采集数据及程序等。
生产I2C总线EEPROM的厂商很多,如ATMEL、Microchip公司,它们都是以24来开头命名芯片型号,最常用就是24C系列。
关于EEPROM的应用总结
关于EEPROM的应用总结关于EEPROM的应用总结当在程序运行的过程中你希望修改某个变量并且此变量的值在掉电以后不丢失,那么你就可以采用将变量数据写入EEPROM的方式来实现。
什么是EEPROM,即Electrically Erasable ProgrammableRead_Only Memory首先它是一种存储器,并且可以通过高电压来进行反复擦写的存储器。
具有掉电数据不丢失的特点。
比如常用的24C系列,93C系列的器件。
一般这种器件采用I2C的方式与单片机进行通讯,对于这种通讯方式及器件的应用另作总结。
这里主要总结一下,STC12C5204AD芯片内部包含的EEPROM的应用方法。
STC12C5201AD系列单片机内部集成了EEPROM是与程序空间分开的,利用ISP/IAP技术可将内部data flash当EEPROM,擦写10万次以上。
EEPROM可分为若干个扇区,每个扇区包含512字节。
使用时建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要用满。
数据存储器的擦除操作是按扇区进行的。
在程序中可对EEPROM进行字节读写/字节编程/扇区擦除操作。
在工作电压Vcc偏低时,建议不要进行EEPROM/IAP操作。
以免发生数据错误。
应用的步骤1、声明与EEPROM相关的寄存器2、编写EEPROM初始化函数3、编写字节擦除函数4、编写字节编程函数5、编写字节读取函数6、在需要读取EEPROM字节内容时直接调用字节读取函数即可7、在需要进行写EEPROM字节时,先调用字节擦除函数,将字节内容擦除成FFH后,在调用字节编程函数,将数据写入到EEPROM的地址单元中。
与EEPROM应用相关的寄存器符号描述地位地址及符号复位值址IAP_DATA ISP/IAP flash dataregisterC2H11111111BIAP_AD DRH ISP/IAP flashaddress highC3H00000000BIAP_AD DRL ISP/IAP flashaddress lowC4HIAP_CMDISP/IAP flashcommand registerC5HMS1MSIAP_TRIGISP/IAP flashcommand triggerC6HxxxxxxxxxBIAP_CO NTR ISP/IAP controlregisterC7HIAPENSWBS SWRSTCMD_FAILWT2WT1WT0000X000BPCON Power control87H SOMDSMOD0LVDFPOFGF1GFPDIDL00110000B1、IAP_DATA:ISP/IAP数据寄存器ISP/IAP操作时的数据寄存器。
EEPROM的应用
导读:1.EEPROM巧妙应用之单片机章程2.基于I2C串行通信的EEPROM在电视中的设计应用3.EEPROM的保护措施在MAXQ环境中1.EEPROM巧妙应用之单片机章程引言全球各单片机生产厂商在MCS-51内核基础上,派生了大量的51内核系列单片机,极大地丰富了MCS-51的种群,致使MCS-51单片机是目前国内应用最广泛的一种单片机型.其中STC公司推出了STC89系列单片机,增加了大量新功能,提高了51的性能,是MCS-51家族中的佼佼者.早期的单片机控制系统,采用单片机加片外EEPROM配合,来存储一些需要预置的重要参数,并在数码管上显示出来.由于单片机控制的整流器要求实时性很强,而早期EEPROM的写周期在10 ms左右,因此运行参数的预置是在整流器待机的情况下进行的.而很多情况下需要在运行的同时记录数据,如用单片机控制的12脉波汽车电泳整流器要求在运行的同时实时记录重要数据,而且在掉电时不丢失.由于在12脉波整流器中运行的单片机程序,其周期必须小于1.67ms(交流电网的1个周期是20 ms,除以12就是l_67 ms),这就要求实时记录的时间在1ms以下甚至更短(考虑到程序的执行时间).经查阅资料发现,目前很多EEPROM达不到这个要求[1],即使时间最短的AT89S8252单片机片内.EEP-ROM的写周期也是2.5 ms.本文通过对EEPROM的巧妙应用,实现了整流器在线记录数据的功能.1 寻找符合要求的单片机设备使用的是Atmel公司的AT89C52(40DIP封装)单片机和EEPROM芯片2817A.要想在不改变原设备电路板的情况下完成要求的功能,就只能在兼容的MCS-51系列单片机中想办法.AT89S8252片内含有2 KB的EEPROM,经编程测试发现,它虽然能实时记录数据并且断电不丢失,但是在向片内EEPROM中记录1个数据时,能引起输出电压和电流的波动,不能满足实际运行的需要.其原因是AT89S8252单片机片内EEPROM的写周期为2.5 ms,超过了1.67 ms的程序的执行周期,从而影响了程序的正常运行.所以执行周期是解决问题的关键.STC89C51RC/RD+系列单片机片内含有EEPROM(Data Flash),读1个字节/编程1个字节/擦除1个扇区(512字节)的时间分别为10/μs/60μs/10 ms.编程1个字节的时间为60μs,远小于AT89S8252片内EEPROM 2.5 ms的编程时间,这为解决问题提供了思路.2问题的解决单片机STC89C55RD+(40DIP封装),其引脚、功能完全与AT89C52兼容,与MCS-51程序也兼容,片内含有20KB的Flash程序存储器,16KB的EEPROM数据存储器.把原用于AT89C52中的程序写到STC89C255RD+中,放到原设备上运行,可长期稳定地运行.经修改的在整流器中运行的单片机程序,实时记录一些数据到STC289C55RD+的EEPROM中,整流器可正常运行,但不能执行扇区擦除操作.执行扇区擦除操作将严重影响整流器的正常运行,引起输出电压和电流的很大波动.执行扇区擦除操作时,从示波器来看整流器的输出间断了20 ms,电压电流显示很大的波动.用示波器捕捉到了EEPROM写时的波形,输出波形暂停了20 ms,1个周波电压,电压波形如图1所示,不执行扇区擦除操作时的波形如图2所示.从图中可以看出,问题得到了很好的解决.究其原因,这与EEPROM的特点有关.STC89C5lRC/RD+系列单片机片内的EEPROM,与普通的EEPROM不同.普通的EEPROM有字节读/写功能,不需要擦除,在字节写的时候自动擦除.而STC89C51RC/RD+系列单片机片内的EEPROM,具有Flash的特性,只能在擦除了扇区后进行字节写,写过的字节中不能重复写,只有待扇区擦除后才能重新写,而且没有字节擦除功能,只能扇区擦除.3 EEPROM(Data FIash)的巧妙应用基于以上EEPROM(Data Flash)不易擦除的特点,可以写后先不擦除.利用EEPROM(Data Flash)容易写、时间短(字节写只有60 μs)的特点,可以充分利用其写的功能.根据汽车电泳整流器的特点:每泳1辆汽车,整流器的输出电流就从0逐渐上升到最大电流,然后又逐渐回到0.从电流的变化可以准确地识别出电泳过的车的数量.每识别出1辆车,就在EEPROM(Data Flash)的1个字节中(起始地址为0000H)写入#01H(也可以是其他数,但不能为#OFFH),然后地址自动加1,等待识别出下一辆车.这样就通过EEPROM(Data Flash)字节地址的方式,间接记录了汽车电泳整流器电泳过的车辆总数,并可在数码管上显示出来.16 KB的EEPROM(Data Flash)可记录16 384辆车.待将计满时,可按擦除按钮擦除EEP-ROM(Data Flash)中的所有扇区,再重新计数.如按每10分钟电泳1辆车,1天工作16小时,可连续记录16 384/60/10×16)=170天.此种方法也可用于对电泳整流器连续工作时间的累计,如每10分钟记录1个数据,可连续记录16 384/(60/10)=2 730小时.整流器停机断电后,每次开机给单片机上电时,在初始化程序中,首先从地址#0000H读片内EEPROM的数据,如果数据不为#OFFH,地址自动加1,再读下一个字节,直到所读数据为#OFFH为止.此时EEPROM的地址指针数据,即为前面累加的电泳车辆数(或累计电泳工作时间),可在数码管上显示出来.整流器工作后,按前述结语结合上产的实际情况,在不改变原设备电路板的情况下,通过使用MCS-51系列兼容单片机STC89C55RD+,巧妙利用其片内EEPROM,实现了在整流器运行的同时记录数据的功能,切掉点情况下不丢失数据.这种方法有效地提高了原设备的功能,给用户的使用到来了极大的方便,并且通过实验验证了此方法是可行的.2.基于I2C串行通信的EEPROM在电视中的设计应用1 前言近年来,数字化电视技术迅猛发展,特别是遥控系统的面市,各厂商在电视机中加人微处理器(MCU),各种人工智能化彩电完全替代了老式电视手动(机械式)控制和记忆方式.随着电视专用MCU功能日益强大,用户使用的功能日趋丰富,所需存储的数据和刷新速度不断提高,先后涌现出各种型号和规格的存储器.目前,电视机中应用最为广泛的是E2PROM.因为E2PROM保存着大量与电视机工作状态密切相关的数据,其可靠性就遥控电视而言至关重要,视为第二核心器件.E2PROM与第一核心器件 (MCU)保持通信,并存储电视机的工作信息.有时由于存储数据的丢失造成重大损失,甚至导致数据无法修复.因此,在电视系统中,对于系统数据和用户数据的存储一般采用电可擦除存储器E2PROM.E2PROM具有操作简便、数据存储时间长、存储温度范围广、可擦写次数多等优点.以ATMEL公司推出的 AT24CXX系列为代表的串口通信E2PROM,以其质量可靠、接口简单等优点,逐渐成为电视产品设计中E2PROM的首选器件.2 AT24CXX系列简介与并行通信存储器相比,串行通信存储器以其占用很少的资源和I/O总线、体积小等优点而应用广泛.典型的串行通信E2PROM AT24CXX是I2C总线串行器件,具有工作电源宽(1.8~5.5 V),抗干扰能力强f输入引脚内置施密特触发器滤波抑制噪声),功耗低(写状态时最大工作电流3 mA),高可靠性(写次数100万次,数据保存100年),支持在线编程等特点.图1给出AT24CXX的内部结构框图,SDA引脚可实现双向串行数据传输,在SCL引脚输入时钟信号的上升沿将数据送入E2PROM,并在时钟的下降沿将数据读出.根据存储器空间地址的大小,AT24CXX分为C02/2K、C04/4K、C08(A)/8K、C16/16K等多种版本,各版本器件除存储空间不同外,其内部性能基本一致,用户可根据实际使用的条件合理选择相应器件.A2、A1和A0引脚为AT24CXX的硬件连接的器件地址输入引脚.一条总线上最多可挂接8个AT24C02或4个AT24C04或2个AT24C08(A)或1个AT24C16.另外,AT24CXX系列器件具有用于硬件数据写保护功能引脚.当该引脚接低电平时,允许器件正常读/写操作;当该引脚接高电平时,器件启动写保护功能.各版本器件的写保护功能说明及存储结构如表1所示.3 AT24CXX在彩电中的设计及应用虽然AT24CXX外围引脚和元件数很少,接口电路简单,但在实际CRT彩电应用中,由于电视机内存在高压跳火等干扰信号,E2PROM会出现一些"怪"现象,导致电视机工作异常.以下给出导致电视机异常工作的主要现象.3.1 非人为因素改变E2PROM部分数据这种现象表现为电视机的工作状态在某次开机后工作异常.如果在发现异常后无任何处理,将在一段时间内保持异常状态.最常见现象如系统关键数据 (行、场数据)的突变,这种现象一般是由开机时显像管打火或其他原因导致I2C总线数据线工作异常产生的误操作.出现这种现象时,如果在工厂菜单或用户菜单里根据标准数据调整这些突变的数据,则可以纠正解决;如果这些突变的数据无法调整,则必须采取软件复位、E2PROM赋初始值等方法解决.从硬件上预防这种现象的方法大多是在I2C总线的SDA、SCL数据线靠近E2PROM引脚处,与地线间加稳压二极管,从而起到保护总线端口的作用,如图2中的VD1、VD2.根据长期产品跟踪的结果表明,采用此方法E2PROM数据出错率小于3‰.但是此方法只能减小寄存器数据出错率,而不能从根本上消除数据出错,但一般也不会导致E2PROM相应数据区域物理损坏.这种方法的优点是简单易行,几乎不占用器件资源.目前最科学的方法是利用E2PROM的写保护功能,AT24C08A的第7引脚是数据通信写保护引脚WP(低电平有效),将其与MCU处理器 I/O接口连接,如图3所示.在E2PROM写操作期间,MCU处理器I/O接口输出低电平,E2PROM允许I2C总线写入数据,而在其他操作过程中,该I/O接口输出高电平,E2PROM不允许I2C总线写入数据.此方法成本低(省去两个稳压二极管),出错率更低,但需软件支持.根据统计,使用 E2FROM写保护功能,数据出错率小于1‰.如果同时使用上述这两种方法,E2PROM数据出错率则更低,效果更佳.3.2 E2PROM部分区域物理损坏常温下,短期内不会产生E2PROM部分区域物理损坏的现象.由于E2PROM在常温下的可擦写100万次.但在高温下,E2PROM的可擦写数大大降低.如果高温下频繁对E2PROM进行擦写操作,短期内易导致E2PROM部分区域物理损坏.其表现为特定数据无法正常存储,即使使用烧录器强制烧录也不能恢复.判定E2PROM部分区域物理损坏的方法:用烧录器将E2PROM中每个地址分别置0和1状态,可检查有无区域物理损坏.确认是 E2PROM损坏,则必须更换新的E2PROM才能排除电视机的故障.若软件处理不当则引起这种现象.要防止这种情况发生必须从软件着手,从而避免对特定区域频繁操作.典型实例是某高清CRT彩电AFT频率自动跟踪系统及其他一些判别系统的软件设计.以AFT频率自动跟踪系统为例,当环境工作温度及电源电压变化后,高频调谐器会有一定的频率点漂移.软件设计时,频率点偏移后,软件程序应即时记录下新的频率点偏移电压值并将其数值存储到E2PROM指定地址中.高温下,由于相关器件的参数发生变化,频点会随温度升高不断漂移,使E2PROM数据刷新异常频繁,从而导致电视机在高温负荷试验中出现E2PROM 物理损坏.在查明原因后,应对该软件进行修改,将实时存储频点数据方式改为频率跟踪掉电存储方式,即只在电视机关机掉电的情况下记录该数据,这样可减少 E2PROM数据刷新次数,从而解决上述问题.4 结语E2PROM作为一种通用存储器件,在设计时往往容易忽视一些对其细节方面的考虑,其中一些问题在设计试制阶段被发现并解决,还有一些问题是要在量产乃至售后一段时间后才暴露出来.因此,完整的现代电子产品系统,更多的是需要依靠软硬件相互配合开发,才能使产品的可靠性到达最佳状态.3.EEPROM的保护措施在MAXQ环境中介绍在嵌入式微控制器应用中,通常都要用到非易失性存储器.无论是掉电时维持需要保存的设置,还是存储公司的重要记录,可靠的非易失性存储器都是现代微控制器领域的一个基本单元.非易失性存储常常采用外部串行存储器实现.多年以来,该领域用到了数十亿颗类似存储器件,它们的可靠性得到了的广泛认可.目前,存储器可以做到几百字节到1兆字节甚至更大的容量,在每一个需要保持设置的设备中,都能找到这样一个紧凑、廉价的器件.包括EEPROM、闪存和旋转式存储器在内,所有类型的非易失性存储器都面临一个共同的问题:写周期被中断时,数据会丢失.一旦在写周期执行过程中掉电,那么即使再恢复电源,也很难修复损坏的数据. 本文提出了一种基于事务的提交-回退机制,用于保护一个外部串行EEPROM存储器件的内容.这些措施同样适用于大多数MAXQ微控制器的内置EEPROM.可以下载本应用的代码文件(ZIP,20.5kb).I2C EEPROM的特点串行存储器件有多种接口,但最常用的接口是I2C接口.这种总线接口有很多优点:高度标准化的接口;控制器和存储器之间只需两条线;而且具有灵活的时序要求,可以由软件驱动.一个I2C主机可以驱动很多I2C从机,从而最大程度减少了主机的引脚数.在所有EEPROM器件中,写周期都要比读周期长的多.因为在写周期过程中,电荷需要借助隧道效应并通过绝缘层进行转移,而这个过程很费时间.虽然增加电压可以加快这个过程,但是过高的电压会导致绝缘层的介质击穿,从而损坏器件.典型的EEPROM器件写周期持续10毫秒左右;而读周期通常需要几百个纳秒.为了显着缩短写周期的时间,许多I2C EEPROM器件采用页面模式.该模式允许将多个字节传送到缓存中,然后将数据一次性写入存储区.I2C存储器件的典型页面尺寸为32字节.因此,可以在一个写周期内向EEPROM填入32个字节.这一点非常重要,因为串行EEPROM器件都具有特定的耐久度:即每个页面所能承受的写周期次数上限.典型的写周期次数从10,000到1,000,000次.然而,即使存储器件能够承受1百万次写周期,软件也会很快将其损耗殆尽.软件每秒仅执行100次写周期,那么不到3个小时就会耗尽器件的写周期次数.考虑到这些基本的EEPROM特性,设计者为一个嵌入式处理器设计可靠的非易失存储系统时,需切记以下几点:不要在同一页面上反复执行写操作.尤其是不要将某个页面设置成写入任何其它页面时都要更新的"目录".如果在写周期过程中电源被中断,必须提供以下机制:(1) 检测被中断的写操作;(2) 完成被中断的操作;(3) 或者将事件回退至写操作之前的状态.必须通过某些数据校验机制(校验和、CRC或消息摘要)来保证数据的完整性.设计目标虽然上面提到的EEPROM问题可通过多种非易失文件系统加以解决,但这样的文件机制对于小型嵌入式微控制器来说负担过重.很多文件系统需要更多的RAM,远远超出了小型微控制器所能提供的容量,而且对于多数应用,也不需要一个完整的文件系统.考虑到这一点,下面列出了EEPROM数据保护机制的设计目标:精简:保护机制用于存储校验数据的空间不应超过EEPROM的10%,它应该只需要少量的计算开销.块大小:被保护的块大小,应该和EEPROM的写操作页面大小一样.由于EEPROM器件的页面大小通常是2的偶数次幂,因此与每个块保留1或2个字节的做法相比,相同的尺寸大小更便于软件编码.耐久性:每个保护周期不要对同一页面进行写操作.可靠性:每次掉电情况下,数据都应是可恢复的.这里提到的保护机制有6个接口函数:读、写、提交、回退、检查和清理.读函数接收一个块编号和一个指向32字节缓存的指针.如果缓存地址和块编号处于有效范围内,程序就会将指定的块数据读入缓存,并校验数据的有效性.它会返回如下状态:有效读(valid read)、无效读(invalid read)、无效缓存地址(invalid buffer address)、无效页面编号(invalid page number)或保护失败(protectiON failure).写函数接收一个块编号和一个指向填好数据的32字节缓存的指针.如果缓存地址和块编号处于有效范围内,程序就会将数据写入非易失性缓存,并标记缓存状态以准备提交.提交和回退函数,是可以在写操作之后执行的互补型操作.提交函数将最近被写入的缓存数据复制到对应的存储区最终位置,并为下一个待写入的数据块准备好缓存结构.回退函数实际上就是一个"取消"操作.它消除最近一次写操作产生的效果,并为下一个写操作准备好缓存子系统. 检查函数读取存储器件的每个数据块,并检查存储数据的有效性.该函数还检查缓存子系统,以确保没有未执行的写操作.任何无效块或未执行的写操作都会使检查函数返回一个错误状态.清理函数修复一个数据损坏的EEPROM.实际上,它将试图找出发生的错误,并采取相应的解决措施.关于这些函数的更多细节,参见下面的操作详解.图1. EEPROM存储器的结构.存储器被划分为3个区域:主存储区,包含实际用户数据;校验存储区,包含主存储区每1页的CRC;缓存,包含存储临时写入数据的四个缓存.EEPROM结构参考上面图1给出的EEPROM结构.EEPROM包含三个主要区域:主存储区:EEPROM的最大区域用于存储用户数据.在一个16kB器件内,包括512页、每页32字节的存储空间.在这样的器件中,开始的473个页面专门用来存储数据.校验存储区:EEPROM的第二个部分,用于校验主存储区每个页面的数据.校验存储区的每1页都包含15个16位的CRC值.每1页的最后1个CRC用于校验本页数据.校验存储区占用31页(从473到503页).缓存:EEPROM的最后部分,包含由8个页面构成的4个写缓存.每个缓存包含4个域:数据域,它包含32字节数据,执行下一个提交命令时,数据将被写入主存储区;地址域,它表示缓存数据要写入的页面地址;状态域,它表示缓存的状态(包括可用(available)、占用(occupied)和终止(expired)状态);16位CRC域,用来校验整个写缓存.缓存结构见图1所示.这种EEPROM结构可以实现主要的设计目标.首先,由于主存储区每1页数据的校验结果都存储在另一个位置,所以页面的所有位都用于存储用户数据.其次,由于主存储区的每1页都通过校验存储区的特定字来校验,因此校验存储区不会有单点错误,并且也不会在每个写周期中都去更新整个校验存储区的同一页面.最后,使用4个写缓存分散了写周期带来的损耗.操作详解对于一个不带保护功能的EEPROM,具体操作非常简单.一个读周期简单地将字节从所选择的地址传送给主机;一个写周期将字节从主机写入EEPROM,并等待操作完成(大多数器件需要几个毫秒的时间).然而,在一个提供保护的EEPROM环境下,读和写操作就比较复杂了.在以下各节中,对每个操作进行了分解,以便了解函数被调用时到底是如何操作的.读操作图2. 读操作的流程图读操作这个最简单的接口函数,也是相当复杂的.图2给出了操作流程:检查页面地址和缓存地址,以检验它们的有效性.如果地址无效,则就此结束操作,函数返回一个无效缓存地址或无效页面编号错误代码.将所选页面读入缓存.计算校验页面的地址,并将相应的校验页面读入暂存区.计算校验页面的CRC.如果校验页面的数据无效,则返回一个保护失败错误代码.计算数据缓存的CRC,并将其与暂存区中对应读取页面的CRC进行比较.如果CRC匹配,则程序返回有效读代码;如果CRC不匹配,则程序返回无效读代码.无论结果怎样,实际读取的数据都保存在返回缓存中,以供调用读操作的程序使用.写操作图3. 写操作的流程图如上所述,写操作并不是真正将数据写入主存储区.实际上,写操作是将数据写入4个缓存之一.在这种方式下,主存储区内原先的数据将一直保持到整个有效写操作流程完成后为止.图3的流程说明了以下几点:检查页面地址和缓存地址,以检验其有效性.如果地址无效,操作在这里结束,函数返回一个无效缓存地址或无效页面编号错误代码.读取每个写缓存的状态域.如果任何缓存处于占用状态,则操作失败并返回写过程(write sequence)错误代码.4个写缓存之一应处于终止状态.如果是这样,激活下一个缓存.数据被复制到写缓存的数据域.页面地址被写入地址域.计算CRC校验结果并将其写入CRC域.将状态改为占用.将前一个缓存置为可用状态(即更新原来的终止状态).需要注意,此时对新写的页面进行读操作,将返回页面原来的数值.只有等提交操作完成后,才会返回新值.提交操作图4. 提交操作的流程提交函数不需要参数.它的工作就是如实地将数据从写缓存传送到主存储区,然后将写缓存标记为终止状态.提交函数的操作流程如图4所示:读取每个写缓存的状态域.应该只有1个缓存标记为占用状态.否则,函数在此结束,并返回一个写过程错误代码.对被占用的缓存进行CRC校验.如果不匹配,则返回一个数据损坏错误代码.提取页面地址,并将数据写入主存储区的指定页面.计算缓存的数据部分的CRC.该值被保存在一个临时寄存器中.找到对应所选主存储区页面的校验页面,并读取该校验页面的内容.用前面计算的CRC更新校验页面,为校验页面计算新的CRC.将校验页面数据重新写回校验存储区.将写缓存更新为终止状态.回退操作图5. 回退操作的流程图如图5所示,回退函数是最简单的操作之一.由于主存储区只有在完成一个提交操作后才更新数据,而不是在一个写操作之后更新的,所以回退操作只需将写缓存置为无效状态即可.读取每个写缓存的状态域.应该只有一个缓存被标记为占用.否则,函数在此结束,并返回一个写过程错误代码.将所选的写缓存状态域置为终止.检查操作图6. 检查操作的流程图在任何上电情况下,都需要调用检查函数以确保EEPROM可以接受数据.检查函数检验存储系统的可用性,并报告任何发现的错误.该函数的检查操作如图6所示:读取每个写缓存.确认只有一个缓存不是可用状态.如果只有一个缓存含有未定义的状态代码,则返回一个写操作中断(interrupted write)错误代码.如果所有缓存均包含未定义的状态代码,则返回EEPROM未初始化(uninitialized EEPROM)错误代码.如果仅有一个缓存包含占用状态代码,计算此缓存的CRC.如果CRC不匹配,则返回一个写操作中断错误代码.检查校验存储区的每一个页面.如果任何页面没有通过CRC校验,则返回保护失败错误代码.最后,检查主存储区的每一页,并与存储的各页CRC进行对比.如果有1页未通过CRC校验,则返回一个提交中断(interrupted commit)错误代码.清理操作图7. 清理操作的流程清理函数解决EEPROM系统存在的任何问题.在清理操作退出时,无论EEPROM子系统先前是何种状态,都应该可以继续使用了.所有未提交的写操作将被回退,并且完成失败的提交操作.图7演示了清理操作是如何工作的:如果检查操作返回一个EEPROM未初始化的错误代码,则初始化EEPROM.清除所有数据页面,并且初始化所有校验页面.除最后一个写缓存被初始化为终止状态外,清除其它所有写缓存并置为可用状态.。
24LC系列EEPROM原理及应用
24L C65 是 8 k 字节串行的电可擦除 PROM ,其 引脚排列如图 1 所示 。
的漏极开路结构引脚 。在扩展容量时 ,可以将多个 24 系列的 SDA 引脚直接相连 。实际使用时应在该 引脚上接一个 511 kΩ 左右的上拉电阻 。
2 24L C65 接口及读写控制
(2) 页面写操作 写操作控制字节 、字地址和第 一个数据以与字节写操作相同的方式发送到 24L C65 。不同的是 , 在指令结构的最后不发停止 位 ,而是发送 8 页的数据字节 , 这些字节暂存在 24L C65 片内的页面高速缓存器中 。主器件发送停 止信号后 , 这些数据字节将从高速缓存器中写入 EEPROM 阵列 。一旦接收到停止条件 ,内部写周期 开始 。格式为
写操作分为字节写操作和页面写操作两种方式 : (1) 字节写操作 主器件向总线发出起始信号
后 ,接着发送 4 位控制码 、3 位器件选择码以及逻辑 低电平信号 ,随后是控制地址指针的字地址的高顺 序字节 ,最后是最低有效地址字节 。格式为
| 起始| 控制字节| AC K| 高位地址| AC K| 低位 地址| AC K| 数据| AC K| 停止位| 。
24L C65 and A T89C51 表 1 8 片 24L C65 地址编码 Table 1 Address code of 24L C65
芯片编号
A0
A1
A2
1
0
0
0
2
0
0
1
3
0
1
0
4
0
1
1
5
1
0
0
6
1
0
1
7
1
1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24系列EEPROM的应用(转)
2008-06-14 09:50
所看过的对24系列I2C读写时序描述最准确最容易理解的资料,尤其是关于主从器件的应答描述和页写描述,看完后明白了很多。
关于页写的描述,网络上绝大部分范程都没提到页写时的数据地址必须是每页的首地址才能准确写入,而且如果写入超过一页的数据会循环覆盖当前页的数据。
关于IIC总线
I2C总线:i2c总线是 Philips 公司首先推出的一种两线制串行传输总线。
它由一根数据线(SDA)和一根时钟线(SDL)组成。
i2c总线的数据传输过程如图3所示,基本过程为:
1、主机发出开始信号。
2、主机接着送出1字节的从机地址信息,其中最低位为读写控制码(1为读、0为写),高7位为从机器件地址代码。
3、从机发出认可信号。
4、主机开始发送信息,每发完一字节后,从机发出认可信号给主机。
5、主机发出停止信号。
I2C总线上各信号的具体说明:
开始信号:在时钟线(SCL)为高电平其间,数据线(SDA)由高变低,将产生一个开始信号。
停止信号:在时钟线(SCL)为高电平其间,数据线(SDA)由低变高,将产生一个停止信号。
应答信号:既认可信号,主机写从机时每写完一字节,如果正确从机将在下一个时钟周期将数据线(SDA)拉低,以告诉主机操作有效。
在主机读从机时正确读完一字节后,主机在下一个时钟周期同样也要将数据线(SDA)拉低,发出认可信号,告诉从机所发数据已经收妥。
(注:读从机时主机在最后1字节数据接收完以后不发应答,直接发停止信号)。
注意:在I2C通信过程中,所有的数据改变都必须在时钟线SCL为低电平时改变,在时钟线SCL为高电平时必须保持数据SDA信号的稳定,任何在时钟线为高电平时数据线上的电平改变都被认为是起始或停止信号。
作为一种非易失性存储器(NVM),24系列EEPROM使用的很普遍,一般作为数据量不太大的数据存储器。
下面总结一下其应用的一些要点。
从命名上看,24CXX 中XX的单位是kbit,如24C08,其存储容量为8k bit,即1k Byte=1024 Byte。
一、工作条件
1.工作电压(VCC)
24CXX: 4.5V-5.5V
24CXX-W:2.5V-5.5V
24CXX-R: 1.8V-5.5V
2.输入电平定义(VIH,VIL)
VIH:0.7VCC-VCC+1
VIL:-0.45V-0.3VCC
二、硬件连接
1.上拉电阻RP的取值
由于I2C总线电容要满足小于400pf的条件。
从以下波形可以看出,上拉电阻越大,总线的电容越小,可以实现的数据传输率就越大,可达400khz。
2.写保护脚
芯片写保护脚是高电平有效,即WP接高电平时禁止写入
3.地址脚
24C01/24C02 三个地址脚(E0,E1,E2)都有效,24C04只有E2,E1有效,24C08只有E2有效,24C16三个地址脚都无效,如下图所示,所谓地址脚无效是指不需要接入电路中(NC ,not connected),其对应的地址位要用来表示要操作的字节的高位地址。
24C32/24C64三个地址脚都有效;
24C128/24C256/24C512的地址脚E1和E0有效,其余为
NC;
24C1024的地址脚E1有效,其余为NC。
三、寻址方式
1.器件地址
当总线上连接多个I2C器件时,需要对器件进行寻址。
器件地址如下表所示,其中E2,E1,E0是指三个引脚的状态,取决于是接地还是接高电平,R/W为1则为读操作,为0则为写操作。
A8,A9,A10,A16指的是所要操作的字节地址的高位,后面会提到。
2.字节地址
在对芯片内的某一字节或一连续地址进行读写操作时,需要制定其地址或首字节的地址,不同芯片地址有不同的表示方式,如下表所示,其中有些芯片的地
四、读写时序
EEPROM一般在电路中做从器件,以下的发送和接收都是针对主器件说明的,开始和结束条件也是由主器件发出。
1、单字节写操作
START->发送器件地址->ack->发送字节地址->ack->发送数据->ack -> STOP
2、按“页”写操作,“页”是指高位地址一样一组数据,对于
24C01/02/04/08/16,一页数据为16字节,一页指高四位地址一样的一组数据。
对于24C32/24C64,一页数据为32字节,一页指高11位地址一样的一组数据。
START->发送器件地址->ack->发送页首地址->ack->发送数据
->ack.........-> 发送数据->ack -> STOP
3、随机单字节读操作
START->发送器件地址(写)->ack->发送字节地址->ack->START->发送器件地址(读)->ack->接收数据->noack->STOP
4、当前单字节读操作,“当前”指的是前面进行过读操作,但是没有STOP,芯片内部“指针”指的字节即为“当前”字节。
START->发送器件地址(读)->ack->接收数据->noack->STOP
5、随机连续字节读操作
START->发送器件地址(写)->ack->发送字节首地址->ack->START ->发送器件地址(读)->ack->接收数据->ack->接收数据->ack.........接收数据(最后字节)
->noack->STOP
6、当前连续字节读操作
START->发送器件地址(读)->ack->接收数据->ack->接收数据
->ack...............接收数据(最后字节)->noack->STOP
关于页写的道理。
AT24Cxx系列的EEPROM为了提高写效率,提供了页写功能,内部有个一页大小的写缓冲RAM,地址范围当然就是从00到一页大小,发生写操作时,开始送入的地址对应的页被选中,并将其内容映像到缓冲RAM,数据从低端地址对应的缓冲RAM地址开始修改,超过这个地址范围就回到00,写完后,就会把开始确定的EEPROM页擦除,再把一整页RAM数据写入。
所有写数据都发生在开始写地址时确定的页上。
如页容量为128,一页都是从00开始按128字节分成一个个的页,0页就是0~7F,1页就是80~FF,类推,边界就是128字节的整数倍地址。
页RAM的地址范围为7位00~7F,写入时高端地址就是页号。
发生写操作,开始送入的地址对应的页被锁存,后续不论写多少,都在这个页中,只是一个页内的地址进行加一,超过就归零开始。
从F0开始写32个字节,那么开始送入的地址为F0,就会锁定在1号页(第2个页)上,底端7位页内部地址开始从70H开始写,到达7F 时回到00再到10H,也就是写在了F0~FF,80~8F。
也就是,从01开始写也只能到7F,再往80写就跑到00上去了,这就是写操作的翻卷,datasheet上都有说明。
就是从边界前写两个字节也要分两次写。
页是绝对的,按整页大小排列,不是从开始写入的地址开始算。
读没有页的问题,可以从任意地址开始读取任意大小数据,只是超过整个存储器容量时地址才回卷。
但一次性访问的数据长度也不要太大。
所以分页的存储器要做好存储器管理,尽量同时读写的数据放在一个页上。
关于页写的道理。
AT24Cxx系列的EEPROM为了提高写效率,提供了页写功能,内部有个一页大小的写缓冲RAM,地址范围当然就是从00到一页大小,发生写操作时,开始送入的地址对应的页被选中,并将其内容映像到缓冲RAM,数据从低端地址对应的缓冲RAM地址开始修改,超过这个地址范围就回到00,写完后,就会把开始确定的EEPROM页擦除,再把一整页RAM数据写入。
所有写数据都发生在开始写地址时确定的页上。
如页容量为128,一页都是从00开始按128字节分成一个个的页,0页就是0~7F,1页就是80~FF,类推,边界就是128字节的整数倍地址。
页RAM的地址范围为7位00~7F,写入时高端地址就是页号。
发生写操作,开始送入的地址对应的页被锁存,后续不论写多少,都在这个页中,只是一个页内的地址进行加一,超过就归零开始。
从F0开始写32个字节,那么开始送入的地址为F0,就会锁定在1号页(第2个页)上,底端7位页内部地址开始从70H开始写,到达7F 时回到00再到10H,也就是写在了F0~FF,80~8F。
也就是,从01开始写也只能到7F,再往80写就跑到00上去了,这就是写操作的翻卷,datasheet上都有说明。
就是从边界前写两个字节也要分两次写。
页是绝对的,按整页大小排列,不是从开始写入的地址开始算。
读没有页的问题,可以从任意地址开始读取任意大小数据,只是超过整个存储器容量时地址才回卷。
但一次性访问的数据长度也不要太大。
所以分页的存储器要做好存储器管理,尽量同时读写的数据放在一个页上。