Download presentation
Presentation is loading. Please wait.
1
第8章 AT89S52单片机外部 存储器的扩展 1
2
8.3.3 AT89S52单片机与RAM的接口设计与软件编程 8.4 片内Flash存储器的编程 8.4.1 使用通用编程器的程序写入
8.1 系统并行扩展结构 8.2 地址空间分配和外部地址锁存器 存储器地址空间分配 外部地址锁存器 8.3 静态数据存储器RAM的并行扩展 常用的静态RAM(SRAM)芯片 外扩数据存储器的读写操作时序 AT89S52单片机与RAM的接口设计与软件编程 8.4 片内Flash存储器的编程 8.4.1 使用通用编程器的程序写入 8.4.2 使用下载线的ISP编程 2
3
8.5 E2PROM的并行扩展 并行E2PROM芯片简介 E2PROM的工作方式 AT89S52单片机扩展E2PROM AT2864的设计
4
【内容概要】 当AT89S52单片机片内的数据存储器与程序存储器(Flash存储器)的容量不能满足需要的情况下,需要进行扩展。存储器的扩展分为并行扩展和串行扩展,本章介绍并行扩展存储器的基本方法,首先介绍了系统并行扩展的基本结构,还介绍了片外存储器地址空间分配的的两种方法:线选法和译码法,以及外部地址锁存器的选择。对于片内Flash程序存储器,重点介绍了程序的写入,而对片外数据存储器以及E2PROM的并行扩展则进行了较为详细的阐述。
5
8.1 系统扩展结构 AT89S52单片机采用总线结构,使扩展易于实现, AT89S52单片机系统扩展结构如图8-1所示。
6
由图8-1可以看出,系统扩展主要包括存储器扩展和I/O接口部件扩展。 AT89S52单片机的存储器扩展即包括程序存储器扩展又包括数据存储器扩展。AT89S52单片机采用程序存储器空间和数据存储器空间截然分开的哈佛结构。扩展后,系统形成了两个并行的外部存储器空间。 系统扩展是以AT89S52为核心,通过总线把单片机与各扩展部件连接起来。因此,要进行系统扩展首先要构造系统总线。 系统总线按功能通常分为3组,如图8-1所示。 6
7
(1)地址总线(Address Bus,AB):用于传送单片机发出的地址信号,以便进行存储单元和I/O接口芯片中的寄存器单元的选择。
(2)数据总线(Data Bus,DB):用于单片机与外部存储器之间或与I/O接口之间传送数据,数据总线是双向的。 (3)控制总线(Control Bus,CB):控制总线是单片机发出的各种控制信号线。
8
如何来构造系统的三总线。 1.P0口作为低8位地址/数据总线 AT89S51受引脚数目限制,P0口既用作低8位地址总线,又用作数据总线(分时复用),因此需增加一个8位地址锁存器。AT89S51访问外部扩展的存储器单元或I/O接口寄存器时,先发出低8位地址送地址锁存器锁存,锁存器输出作为系统的低8位地址(A7~ A0)。随后,P0口又作为数据总线口(D7~ D0),如图8-2所示。 2.P2口的口线作为高位地址线 P2口用作系统的高8位地址线,再加上地址锁存器提供的低8位地址,便形成了系统完整的16位地址总线。 8
9
使单片机系统的寻址范围达到64KB。 图 单片机扩展的片外三总线 9
10
3.控制信号线 除地址线和数据线外,还要有系统的控制总线。这些信号有的就是单片机引脚的第一功能信号,有的则是P3口第二功能信号。包括: (1)PSEN*作为外扩程序存储器的读选通控制信号。 (2)RD*和WR*为外扩数据存储器和I/O的读、写选通控制信号。 (3)ALE作为P0口发出的低8位地址锁存控制信号。 (4)EA*为片内、片外程序存储器的选择控制信号。 可见,AT89S51的4个并行I/O口,由于系统扩展的需要,真正作为数字I/O用,就剩下P1和P3的部分口线。 10
11
8. 2 地址空间分配和外部地址锁存器 本节讨论如何进行存储器空间的地址分配,并介绍用于输出低8位地址的常用的地址锁存器。 8. 2
8.2 地址空间分配和外部地址锁存器 本节讨论如何进行存储器空间的地址分配,并介绍用于输出低8位地址的常用的地址锁存器。 存储器地址空间分配 实际系统设计中,既需要扩展程序存储器,又需要扩展数据存储器,如何把片外的两个64KB地址空间分配给各个程序存储器、数据存储器芯片,使一个存储单元只对应一个地址,避免单片机发出一个地址时,同时访问两个单元,发生数据冲突。这就是存储器地址空间分配问题。 11
12
AT89S52单片机发出的地址码用于选择某个存储器单元,外扩多片存储器芯片中,单片机必须进行两种选择:一是选中该存储器芯片,这称为“片选”,未被选中的芯片不能被访问。二是在“片选”的基础上再根据单片机发出的地址码来对“选中” 芯片的某一单元进行访问,即“单元选择”。 为实现片选,存储器芯片都有片选引脚。同时也都有多条地址线引脚,以便进行单元选择。注意,“片选”和“单元选择”都是单片机通过地址线一次发出的地址信号来完成选择。 通常把单片机系统的地址线笼统地分为低位地址线和高位地 12
13
址线,“片选”都是使用高位地址线。实际上,16条地址线中的高、低位地址线的数目并不是固定的,只是习惯上把用于 “单元选择”的地址线,都称为低位地址线,其余的为高位地址线。
常用的存储器地址空间分配方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法),下面介绍。 1.线选法 是直接利用系统的某一高位地址线作为存储器芯片(或I/O接口芯片)的“片选”控制信号。为此,只需要把用到的高位地址线与存储器芯片的“片选”端直接连接即可。
14
线选法优点是电路简单,不需要另外增加地址译码器硬件电路,体积小,成本低。缺点是可寻址的芯片数目受到限制。另外,地址空间不连续,每个存储单元的地址不唯一,这会给程序设计带来不便,只适用于外扩芯片数目不多的单片机系统的存储器扩展。 2.译码法 使用译码器对AT89S51单片机的高位地址进行译码,译码输出作为存储器芯片的片选信号。这种方法能够有效地利用存储器空间,适用于多芯片的存储器扩展。常用的译码器芯片有74LS138(3线-8线译码器)、74LS139(双2线-4线译码器)和74LS154(4线-16线译码器)。 14
15
若全部高位地址线都参加译码,称为全译码;若仅部分高位地址线参加译码,称为部分译码。部分译码存在着部分存储器地址空间相重叠的情况。 下面介绍常用的译码器芯片。 (1)74LS138 3线-8线译码器,有3个数据输入端,经译码产生8种状态。引脚如图8-3所示,真值表见表8-1。由表8-1可见,当译码器的输入为某一固定编码时,其输出仅有一个固定的引脚输出为低电平,其余的为高电平。输出为低电平的引脚就作为某一存储器芯片的片选信号。 15
16
16
17
(2)74LS139 双2线-4线译码器。这两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许端,其引脚如图8-4所示,真值表见表8-2(只给出其中一组)。
图 LS138引脚图 图 LS139引脚图 17
19
以74LS138为例,如何进行地址分配。 例如,要扩8片8KB的RAM 6264,如何通过74LS138把64KB空间分配给各个芯片? 由74LS138真值表可知,把G1接到+5V,G2A*、G2B* 接地,P2.7、P2.6、P2.5(高3位地址线)分别接74LS138的C、B、A端,由于对高3位地址译码,这样译码器有8个输出Y7*~ Y0*,分别接到8片6264的各“片选”端,实现8选1的片选。 低13位地址(P2.4~P2.0,P0.7~P0.0)完成对选中的6264芯片中的各个存储单元的“单元选择”。这样就把64KB存储器空间分成8个8KB空间了。 19
20
64KB地址空间分配如图8-5所示。 这里采用全地址译码方式。因此,AT89S51发出16位地址时,每次只能选中某一芯片及该芯片的一个存储单元
图 KB地址空间划分成8个8KB空间 20
21
如何用74LS138把64KB空间全部划分为4KB的块呢?4KB空间需12条地址线,而译码器输入只有3条地址线(P2.6~P2.4),P2.7没有参加译码,P2.7发出的0或1决定选择64KB存储器空间的前32KB还是后32KB,由于P2.7没有参加译码,就不是全译码方式,前后两个32KB空间就重叠了。那么,这32KB空间利用74LS138译码器可划分为8个4KB空间。 如果把P2.7通过一个非门与74LS138译码器G1端连接起来,如图8-6所示,就不会发生两个32KB空间重叠的问题了。这时,选中的是64KB空间的前32KB空间,地址范围为0000H~7FFFH。 21
22
如果去掉图8-6中的非门,地址范围为8000H~FFFFH。把译码器的输出连到各个4KB存储器的片选端,这样就把32KB空间划分为8个4KB空间。P2.3~P2.0,P0.7~P0.0实现“单元选择”,P2.6~P2.4通过74LS138译码实现对各存储器芯片的片选。 采用译码器划分的地址空间块都是相等的,如果将地址空间块划分为不等的块,可采用可编程逻辑器件FPGA对其编程来代替译码器进行非线性译码。
23
图 存储器空间被划分成每块4KB 23
24
8.2.2 外部地址锁存器 受引脚数的限制,P0口兼用数据线和低8位地址线,为了将它们分离出来,需在单片机外部增加地址锁存器。目前,常用的地址锁存器芯片有74LS373、74LS573等。 1.锁存器74LS373 是一种带三态门的8D锁存器,其引脚如图8-7所示,内部结构如图8-8所示。AT89S51与74LS373锁存器的连接如图8-9所示。 24
25
图 锁存器74LS373的引脚 25
26
图 LS373的内部结构 26
27
图 AT89S51单片机P0口与74LS373的连接 27
28
G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。
引脚说明: D7~D0:8位数据输入线, Q7~Q0:8位数据输出线。 G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。 OE*:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。 74LS373锁存器功能如表8-3。 28
29
由图8-10,与74LS373相比,74LS573的输入D端和输出Q端依次排列在芯片两侧,为绘制印制电路板提供方便
也是一种带有三态门的8D锁存器,功能及内部结构与74LS373完全一样,只是其引脚排列与74LS373不同,图8-10为74LS573引脚图。 由图8-10,与74LS373相比,74LS573的输入D端和输出Q端依次排列在芯片两侧,为绘制印制电路板提供方便 引脚说明: D7~D0:8位数据输入线。 Q7~Q0:8位数据输出线。 G :数据输入锁存选通信号,该引脚与74LS373的G端功能相同。 29
30
图8-10 锁存器74LS573的引脚
31
OE*:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。
32
8.3 静态数据存储器RAM的扩展 AT89S52单片机片内有256B RAM,往往不能满足实际需要,必须片外扩展数据存储器。数据存储器分为动态数据存储器与静态数据存储器。在单片机应用系统中,如果外部扩展动态数据存储器,还需要有对应的刷新电路,所以,在单片机的外部扩展的数据存储器都采用静态数据存储器(SRAM)。 对外部扩展的数据存储器空间访问,P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据总线。片外数据存储器RAM的读和写由单片机的RD*(P3.7)和WR*(P3.6)信号控制。 32
33
8.3.1 常用的静态RAM(SRAM)芯片 单片机系统中常用的RAM芯片的典型型号有6116(2KB ),6264(8KB),62128(16KB),62256(32KB)。 6116为24脚封装,6264、62128、62256为28脚封装。这些RAM芯片的引脚如图8-11所示。 33
34
图 常用的RAM引脚图 34
35
各引脚功能: A0~A14:地址输入线。 D0~D7:双向三态数据线。 CE
各引脚功能: A0~A14:地址输入线。 D0~D7:双向三态数据线。 CE*:片选信号输入线。对6264芯片,当24脚(CS)为高电平,且 CE*为低电平时才选中该片。 OE* :读选通信号输入线,低电平有效。 WE*:写允许信号输入线,低电平有效。 VCC —工作电源+5V。 GND —地。 RAM存储器有读出、写入、维持3种工作方式,工作方式的控制见表8-4。 35
36
外扩数据存储器的读写操作时序 对片外RAM读和写两种操作时序的基本过程相同。 1.读片外RAM操作时序 若外扩一片RAM,应将WR*脚与RAM的WE*脚连接,RD*脚与芯片OE*脚连接。
37
单片机读片外RAM操作时序如图8-12所示。 在第一个机器周期的S1状态,ALE信号由低变高(①处),读RAM周期开始。在S2状态,CPU把低8位地址送到P0口总线上,把高8位地址送上P2口(在执行“MOVX ALE下降沿(②处)用来把低8位地址信息锁存到外部锁存器74LS373内。而高8位地址信息一直锁存在P2口锁存器中(③处)。 在S3状态,P0口总线变成高阻悬浮状态④。在S4状态,执行指令“MOVX (见⑤处)后使RD* 信号变有效 37
38
图 单片机读片外RAM操作时序图 38
39
,RD* 信号使被寻址的片外RAM过片刻后把数据送上P0口总线(⑥处),当RD* 回到高电平后(⑦处),P0总线变悬浮状态(⑧处)。
向片外RAM写数据,单片机执行“MOVX @DPTR,A”指令。 指令执行后,单片机的WR*信号为低有效,此信号使RAM的WE* 端被选通。 写片外RAM的时序如图8-13所示。开始的过程与读过程类似,但写的过程是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线(③处)。此间,P0总线上不会出现高阻悬浮现象。
40
图 单片机写片外RAM操作时序图 40
41
在S4状态,写信号WR. 有效(⑤处),选通片外RAM,稍过片刻,P0口上的数据就写到RAM内了,然后写信号WR. 变为无效(⑥处)。 8
在S4状态,写信号WR*有效(⑤处),选通片外RAM,稍过片刻,P0口上的数据就写到RAM内了,然后写信号WR*变为无效(⑥处)。 AT89S52单片机与RAM的接口设计与软件编程 AT89S52对片外RAM的读和写由单片机的RD*(P3.7)和WR*(P3.6)控制,片选端由译码器译码输出控制。因此设计时,主要解决地址分配、数据线和控制信号线的连接问题。在与高速单片机连接时,还要根据时序解决读/写速度匹配问题。 图8-14为用线选法扩展AT89S51外部数据存储器电路。图中数据存储器选用6264,该芯片地址线为A0~A12,故单片机剩余地址线为3条。 41
42
图 线选法扩展外部数据存储器电路图 42
43
用线选可扩展3片6264,对应的存储器空间见表8-5。
用译码法扩展外部数据存储器的接口电路如图8-15所示。数据存储器62128,芯片地址线为A0~A13,剩余地址线为两条,若采用2线-4线译码器可扩展4片62128。各片62128芯片地址分配如表8-6所示。 43
44
图 译码法扩展外部数据存储器电路图 44
45
【例8-1】编写程序将片外数据存储器中5000H~50FFH单全部清“0”。
方法1 用DPTR作为数据区地址指针,同时使用字节计数 器。参考程序如下: 45
46
方法2 用DPTR作为数据区地址指针,但不使用字节计数器,而是比较特征地址。参考程序如下:
46
47
47
48
2.单片机片外数据区读/写数据过程 当程序运行中,执行“MOV”类指令时,表示与片内RAM交换数据;当遇到“MOVX”类指令时,表示对片外数据存储器区寻址。片外数据存储器区只能间接寻址。 例如,把片外6000H单元的数据送到片内RAM 50H单元中,程序如下: 48
49
先把寻址地址6000H送到数据指针寄存器DPTR中,当执行“MOVX 50H,A”时,则把该数据存入片内50H单元。 向片外数据区写数据的过程与读数据的过程类似。 例如,把片内50H单元的数据送到片外4000H单元中,程序如下:
50
执行第1条指令,先把片内RAM 50H单元的数据送到A中,第2条指令把寻址地址4000H送到数据指针寄存器DPTR中,当执行“MOVX @DPTR,A”时,DPTR的低8位(00H)由P0口输出并锁存,高8位(40H)由P2口直接输出,根据P0口、P2口状态选中IC3(6264)的4000H单元。当写选通信号WR*有效时,A中的内容送往片外4000H单元。 @Ri,A”。这时P0口装入Ri中内容(低8位地址),而把P2口原有的内容作为高8位地址输出。【例8-4】是采用“MOVX @Ri,A”指令的例子。
51
【例8-4】编程,将程序存储器中以TAB为首址的32个单元内容依次传送到外部RAM以4000H为首址的区域。 DPTR指向标号TAB首地址。R0既指示外部RAM的地址,又表示数据标号TAB的位移量。程序为一循环程序,循环次数为32,R0的值达到32就结束循环。 参考程序: 51
52
52
53
8.4 片内Flash存储器的编程 目前许多公司生产的8051内核单片机,在芯片内部大多集成了数量不等的Flash ROM,例如,美国ATMEL公司生产的AT89S5x系列单片机,片内分别有不同容量的Flash ROM,作为片内程序存储器使用,见表8-7。此时,在片内的Flash ROM满足要求的情况下,扩展外部程序存储器的工作就可省去,只需讨论如何向片内的Flash ROM写入程序问题。 程序存储器为只读存储器,因为这种存储器在电源关断后,仍能保存程序(称此特性为非易失性的),在系统上电后,CPU可取出这些指令重新执行。
55
只读存储器简称ROM(Read Only Memory)。ROM中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容,故称为只读存储器。
常见的只读存储器有以下几种。 (1)EPROM。EPROM是用电信号编程,用紫外线擦除的只读存储器芯片。在芯片外壳的中间位置有一个圆形窗口,通过该窗口照射紫外线就可擦除原有的信息。使用编程器可将调试完毕的程序写入。 (2)E2PROM(EEPROM)。E2PROM这是一种用电信号编程,也用电信号擦除的ROM芯片。对E2PROM的读写操作与RAM存储器几乎没有什么差别,只是写入的速度慢一些,
56
但断电后仍能保存信息。 (3)Flash ROM。 Flash ROM又称闪烁存储器(简称闪存),Flash ROM是在EPROM、E2PROM的基础上发展起来的一种电擦除型只读存储器。其特点是可快速在线修改其存储单元中的数据,最大改写次数可达1万次,其读写速度很快,存取时间可达70ns,成本却比普通E2PROM低得多。 美国ATMEL公司的AT89S5x系列单片机,在片内Flash ROM满足要求的情况下,外部程序存储器的扩展工作即可省去。本节只讨论如何把已调试完毕的程序代码写入到AT89S52的片内Flash存储器中,即Flash存储器的编程问题。
57
AT89S52单片机片内8KB Flash存储器的基本特性如下:
(1)可循环写入/擦除1 000次; (2)存储器数据保存时间为10年; 单片机芯片出厂时,Flash存储器处于全部空白状态(各单元均为FFH),可直接进行编程写入。若Flash存储器不全为空白状态(即单元中有不是FFH的),应该首先将芯片擦除(即各个单元均为FFH)后,才可向其写入调试通过的程序代码。
58
AT89S52片内的Flash存储器有3个可编程的加密位,定义了3个加密级别,用户只要对3个加密位:LB1、LB2、LB3进行编程即可实现3个不同级别的加密。经过上述的加密处理,使解密的难度加大,但还是可以解密。现在还有一种非恢复性加密(OTP加密)方法,就是将AT89S52的第31脚(脚)烧断或某些数据线烧断,经过上述处理后的芯片仍然正常工作,但不再具有读取、擦除、重复烧写等功能。这是一种较强的加密手段,某些型号的编程器直接具有此功能。 目前对片内Flash存储器的编程有两种常用方法:一种是使用通用编程器编程;另一种是利用PC机通过下载线进行在线编程(ISP)。
59
8.4.1 使用通用编程器的程序写入 通用编程器一般通过串行口或USB口与PC机相连,并配有相应的驱动软件。在编程器与PC机连接后,在PC机上运行驱动软件,先选择要编程的单片机型号,再调入调试完毕的程序代码文件,执行写入命令,编程器就将调试通过的程序代码烧写到单片机片内的Flash存储器中。开发者只需在电子市场购买一台通用编程器即可完成上述工作。 编程器通过USB口与PC机通讯,可进行芯片型号自动判别,编程过程中的擦除、烧写、校验等各种操作。 编程器供电部分由USB口的5V电源提供,省去笨重的外接电源并加入USB接口保护电路,即自恢复保险丝,不怕操作短路。
60
编程器的驱动软件界面包含有菜单、工具栏、快捷键等,具有编程、读取、校验、空检查、擦除、加密等功能。
8.4.2 使用下载线的ISP编程 AT89S5x单片机支持对片内Flash存储器在线编程(ISP),即PC机直接通过下载线向片内Flash存储器写入程序代码。编程完毕的片内Flash存储器也可用ISP方式擦除或再编程。 ISP下载线按与PC机的连接分为三种类型:串口型、并口型以及USB型,可自行制作,也可在电子市场购买。由于USB接口下载线使用起来较为方便,因此目前使用普遍。购买USB接口ISP下载线时,已经配置了相应的驱动软件。
61
ISP下载线与单片机一端的连接端口通常采用ATMEL公司提供的接口标准,即10引脚的IDC端口。图8-16为IDC端口的实物图以及端口的定义。
采用ISP下载程序时,用户目标板上必须装有上述IDC端口,端口中的信号线必须与目标板上AT89S52的对应引脚连接。注意,图中的8脚P1.4(SS*)端只是对AT89LP系列单片机有效,对AT89S5x系列单片机无效,不用连接即可。 使用ISP下载编程时,只需运行编程软件,按照使用说明书进行操作即可。
62
图 IDC端口的实物图以及端口的定义
63
就单片机发展方向而言,目前已经趋向于ISP程序下载方式,一方面由于原有不支持ISP下载的芯片逐渐被淘汰(部分已经停产,例如AT89C51),另一方面ISP使用起来十分方便,不需要编程器就可实现程序的下载,所以ISP下载方式已经逐步成为主流。 需注意,虽然ISP的程序下载方法简单易行,但对已有的单片机系统来说,单片机可能仍是较老机型,或在设计系统时由于程序存储器空间不够用等原因扩展了大容量存储器,此时ISP下载方式就显得无能为力了。另外有些厂家的单片机机型不支持ISP下载方式,所以有时还是要用到编程器。目前,各种通用的编程器型号较多,根据自己的需求进行选择即可。
64
8.5 E2PROM的并行扩展 在以单片机为核心的智能仪器仪表、工业监控等应用系统中,某些动态测试数据以及某些状态参数数据,不仅要求能够在线修改保存,而且断电后能保持。断电后的数据的保护可采用电可擦除写入的存储器E2PROM,其突出优点是能够在线擦除和改写。 E2PROM与Flash存储器都可在线擦除与改写,且都可断电保存数据,区别在于Flash存储器结构简单,同样的存储容量占芯片面积较小,成本自然比E2PROM低,且大数据量下的操作速度更快,但缺点是擦除、改写都是按扇区进行的,操作过程麻烦,所以Flash存储器的结构更适合数据量不需频繁改写的程 64
65
序存储器。而传统结构的E2PROM,操作简单,可字节写入,非常适合用作运行过程中频繁改写的某些非易失的小数据量的存储器。
E2PROM有并行和串行之分,并行的速度比串行的快,容量大。例如并行的E2PROM 2864A的容量为8k×8位。而串行I2C接口的E2PROM与单片机的接口简单,比较流行的是ATMEL公司的串行芯片AT24C02/AT24C08/AT24C16等。 串行E2PROM AT24C02的扩展将在11.3.5小节中的作为I2C总线扩展的设计案例介绍。本节只介绍AT89S52单片机扩展并行E2PROM芯片2864的设计。
66
8.5.1 并行E2PROM芯片简介 常见的并行芯片有2816/2816A,2817/2817A,2864A等。引脚如图8-17所示,其主要性能见表8-11 (表中芯片均为Intel公司产品)。 在引脚设计上,2KB的E2PROM 2816与相同容量的EPROM 2716和静态RAM 6116是兼容的,8KB的E2PROM 2864A与同容量的EPROM 2764和静态RAM 6264也是兼容的。 2816、2817和2864A的读出数据时间均为250ns,写入时间10ms。 66
67
图8-17 常见的并行E2PROM引脚图 67
68
68
69
8. 5. 2 E2PROM的工作方式 下面对E2PROM 2864A的4种工作方式作以说明。 1.读方式 当 CE. 和 OE
8.5.2 E2PROM的工作方式 下面对E2PROM 2864A的4种工作方式作以说明。 1.读方式 当 CE*和 OE*均为低而 WE*为高时,内部的数据缓冲器被打开,数据送上总线,此时可进行读操作。 2.写方式 2864A提供两种数据写入方式:页写入和字节写入。 (1)页写入 为提高写速度,2864A片内设置16字节的“页缓冲器”,将整个存储器阵列划分成512页,每页16字节。高9位(A12~A4) 确定页,低4位(A3~A0) 选择页缓冲器中的16个地址单元之一。 69
70
写操作分两步来实现: 第一步,在软件控制下把数据写入页缓冲器,这步称为页装载,与一般的静态RAM写操作是一样的。 第二步,在最后一个字节(即第16个字节)写入到页缓冲器后20ns自动开始,把页缓冲器的内容写到E2PROM阵列中对应地址的单元中,这一步称为页存储。 写方式时, CE*为低,在WE*下降沿,地址码A12~A0被片内锁存器锁存,在 WE*上升沿数据被锁存。 片内有一个字节装载限时定时器,只要时间未到,数据可随机地写入页缓冲器。在连续向页缓冲器写数据过程中,不用担心限时定时器会溢出,因为每当 下降沿时,限时定时器 70
71
自动被复位并重新启动计时。限时定时器要求写一个字节数据时间TBLW须满足:3µs<TBLW<20µs,这是正确对2864A页面写操作的关键。当一页装载完毕,不再有WE*信号时,限时定时器将溢出,页存储操作随即自动开始。首先把选中页的内容擦除,然后写入的数据由页缓冲器传递到E2PROM阵列中。 (2)字节写入 与页写入类似,写入一个字节,限时定时器就溢出。 3. 数据查询方式 用软件来检测写操作中页存储周期是否完成。在页存储期间,如对2864A执行读操作,那么读出的是最后写入的字节, 71
72
若芯片的转储工作未完成,则读出数据的最高位是原来写入字节最高位的反码。据此,单片机可判断芯片的编程是否结束。如果读出的数据与写入的数据相同,表示芯片已完成编程,可继续向2864A装载下一页数据。 上面的E2PROM都是针对Intel公司的产品,其它公司的产品不一定相同。 4.维持方式 当CE*为高电平时,2864A进入低耗维持方式。此时,输出线呈高阻态,芯片的电流从140mA降至维持电流60mA。 72
73
AT89S51扩展E2PROM AT2864设计 接口电路如图8-18所示。2864A的片选端 CE*与P2.7连接,P2.7=0时选中2864A, P2.4~P2.0和P0.7~P0.0作为系统的14条地址线。2864A对应的8K地址空间为6000H~7FFFH(未用到的地址线P2.6、P2.5,即A14、A13恒为高)。这8K字节存储器可作为动态数据改写与测试数据保存的非易失性存储器使用。 AT89S52对2864A进行写操作时所用指令包括: MOVX @DPTR,A MOVX @Ri,A 73
74
AT89S52对2864A进行读操作时所用指令包括: MOVX MOVX 74
75
图 A与AT89S52单片机的接口电路
76
下面介绍对2864A装载一个页面数据(16个字节)的子程序WR2的编写。
被写入的数据取自源数据区,子程序入口参数为: R1=写入2864A的字节数(16B) R2=2864A的低位地址 P2=2864A的高位地址 DPTR=源数据区首地址 76
77
77
78
上述写入程序中,完成页面装载的循环部分共8条指令,当采用12MHz晶振时,进行时间约为13µs,完全符合2864A的TBLW的宽度要求。
78
Similar presentations