74HC373与闪速存储器AT29C010A及其应用
扫描二维码
随时随地手机看文章
引言
FLASH存储器是一种电擦除与再编程的快速存储器,又称为闪速存储器。它可以分为两大类:并行FLASH和串行FLASH。串行产品能节约空间和成本,但存储量小,又由于是串行通信,所以速度较慢,开发编程较复杂;并行产品具有存储量大,速度快,使用方便等特点。ATMEL公司生产的29系列存储器是一种并行、高性能、大容量闪速存储器。
AT29C010A的主要特点
ATMEL公司生产的29系列CMOS Flash存储器分为电池电压型AT29BV系列(2.7V-3.6V操作),低电压型AT29LV系列(3.0-3.6V操作),标准电压型AT29C (5V操作)。AT29C010A是一种5V 在线闪速可电擦除的存储器,具有掉电保护功能;方便的在线编程能力不需高的输入电压,指令系统在5V电压下即可控制AT29C010A。 AT29C010A具有1M位的存储空间,分成1024个分区,每一分区有128个字节。从AT29C010A中读取数据与E2PROM的操作相似,再编程能力是以每一分区为单位的,128字节的数据装入AT29C010A的同时完成编程。在一个再编程周期里,存储单元的寻址和128字节数据通过内部锁存可释放地址和数据总线,这样可为其他操作提供地址和数据总线。编程周期开始,AT29C010A会自动擦除分区的内容,然后对锁存的数据在定时器的作用下进行编程。编程周期的结束是通过查询I/O7的有效时实现的,一旦编程周期结束,就可开始一个新的读或编程操作。
图1 AT29C010A内部结构图
AT29C010A具有以下主要特性:可电擦除、可编程的闪速存储器;快速读取时间—70ns;内部程序和定时器控制;2个8K的可锁定的自举模块;分区程序操作,擦除、编程单向循环方式,可超过10000次,1024个分区(128字节/分区),内部地址和128位数据锁存;硬件和软件数据保护;快速的的分区编程周期—10ms;数据轮询检测编程是否结束;低功率消耗—50mA有效电流,100mACMOS维持电流;单一5V±10%电源供电;CMOS和TTL可兼容的输入输出;有商用和工业用的温度可选范围。
AT29C010A的内部结构如图1所示。
器件操作
读操作
AT29C010A的存取类似于E2PROM,当和为低电平、WE为高电平时,由A0-A16寻址的内存单元中的数据会读到I/O0-I/O7输出管脚;若和为高电平,则I/O0-I/O7输出管脚为高阻态。这种双向控制的方式为使用者提供了避免总线竞争的灵活性。
字节装载
AT29C010A的字节装载是用于装入每一分区待编程的128K字节数据或是用于进行数据保护的软件编码。每一字节的装载是通过或各自有低电平,为高电平时实现的,数据是在或在一个上升沿时锁存的。
编程
AT29C010A 以分区为单位进行再编程,如果某一分区中的一个数据需要改变,那么这一分区中的所有数据必须重新装入。一旦某一分区中的字节被装入,这些字节将同时在内部编程时间内进行编程,在此时间内若有数据装入,则会产生不确定的数据;当第一字节数据装入AT29C010A之后,接着其余字节将以同一方式依次装入,字节不需按顺序装载,可以任意方式装载。每一新装载的数据若要被编程,必须有(或)由高到低的跳变,这一跳变需在150ms内完成,同时前面字节的(或)由低到高的跳变时间也是150ms。如果一个由高到低的跳变在最后一个由低到高的150ms内没有被检测到,那么字节装载的时间段将结束,此时内部编程时间段开始。A7-A16提供分区地址,分区地址只在每一个(或)由高到低的跳变时才有效;A0-A6提供分区中每一字节的地址。一旦编程时间段开始,在写周期的维持时间内,读操作实际上是一种查询。
软件数据保护
AT29C010A具有软件控制数据保护的特性,这一特性在ATMEL公司出厂时没有开启,用户可根据需要开启或关闭。一旦开启,在未执行关闭指令之前这一特性始终有效;供电情况的改变不会重新设置这一特性,但需警惕在供电情况改变时随机的编程周期可能改变这一特性。若要开启软件数据保护,必须执行三条针对存放有特殊数据的特殊地址单元的程序指令。当开启软件数据保护之后,所需的程序若要出现,也必须执行同样的三条程序指令。软件保护使能的软件算法必须在程序可能执行之前发送到AT29C010A,所有的软件程序指令要按照分区程序的时序要求进行。在给出软件数据保护的指令代码之后便可进行字节的装载。图2给出了软件数据保护使能或撤销软件算法的流程图。
图2 软件数据保护使能或撤销流程图
图3 工业智能检测仪器框图
硬件数据保护
AT29C010A硬件保护有以下几种方法:
·VCC自动检测—如果VCC低于3.8V(典型值),程序的运行将中止。
·VCC供电延迟—如果VCC达到自动检测水平,AT29C010A将自动在编程前暂停5ms。
·编程禁止—当为低电平时,或为高电平时禁止编程。
·噪声滤波—当或输入脉宽少于15ns(典型值),则不启动编程周期。
数据轮询
AT29C010A采用数据轮询来识别程序是否结束。在编程周期内,试图读数据的操作将在装载最后一字节时在I/O7上产生装载数据完成的信号;一旦编程周期结束,有效的数据将送到输出端,并且开始下一编程周期,数据轮询可以在编程周期的任何时间进行。
重复位
另外,除数据轮询方式外,AT29C010A还提供另一种决定编程、擦除周期的方法。编程和擦除操作周期,连续的试图从AT29C010A中读数据的操作在I/O6上出现1和0,一旦编程周期结束,I/O6位将重复并且读取有效数据;检测重复位可在编程周期任何时间进行。
图4 硬件接口电路图
图5 数据写入流程框图
应用实例
下面介绍用AT29C010A作为工业智能检测仪器存储器的一个实际应用,主要用AT29C010A来存储一级汉字库汉字部分、单片机采集处理的数据和仪器设定的一些参数。该仪器采用AT89C52作为中央处理器,AT29C010A作为存储器,74HC373作为地址锁存器,点阵式LCD显示器用作显示图形和字符,X1203作为实时时钟;另外,还有上位机通信电路,继电器报警电路,按键操作电路、指示灯电路及检测电路等。图3为工业智能检测仪器框图。
硬件接口电路
AT29C010A存储器与单片机AT89C52的硬件接口电路图如图4所示。用AT89C52的 P0口作为存储器的数据输入/输出端,通过P0口经74HC373输出低8位地址,P2口和P3.0出端作为存储器A8~A16地址,CE接ALE,WE 接WR(P3.6),OE接RD(P3.7)。
软件注意事项
读取数据过程类似于普通E2PROM。但在写入(编程)时,它和普通 E2PROM不同,AT29C010A是采用按扇区编程,每个扇区大小为128个字节。由于每次写入数据时,整个扇区数据都将重写,因此必须采用数据缓冲区来存放要写入的数据(包括该扇区内已存在的数据)。在此应用实例中,采用AT89C52作中央处理器,它具有256字节内部数据存储器(RAM),用其中128字节(80H_FFH)RAM作为数据缓冲区存放要写入的数据。图5为数据写入流程图。
在存储器进入软件数据保护状态、块锁定状态或软件产品标识状态时,无法对存储器进行写入。此时,必须用软件来退出软件数据保护状态、块锁定状态或软件产品标识状态