1. 闪存28F016S5的特点及接口信号
1.1 特点
28F016S5是Intel公司最近推出的2MB闪烁存储器,它具有以下特点;
●采用灵巧电压技术,5V Vcc和5V Vpp;
●85ns的读取速度;
●增强的数据保护特性。当Vpp=GND时,完全保护;还可以进行灵活的块保护,电源变动过程中停止块写入;
●增强的自动延时选项。编程时延时读;块擦除时编程延时和读延时;
●具有高密度64kB对称擦除块结构,16Mbit 32块;
●高循环使用能力,可擦除10万次;
●低电源管理,完全休眠模式;自动节电模式,在静态模式中降低Icc。
●自动编程和块擦除,提供命令接口和状态寄存器;
●具有与SRAM兼容的写入接口;
●采用了ETOXTMV非易失性闪存技术。
1.2 引脚排列和功能
28F016S5有40脚TSOP和44脚PSOP两种封装形式。
引脚功能分别说明如下:
A0~A20:21根地址线,输入信号,寻址范围2M;
DQ0~DQ7:8根双向输入/输出数据线,同时存取一个字节;
CE:片选信号,输入,低电平有效;
RP:复位/休眠信号,输入,低电平时处于休眠状态;
OE:输出使能信号,输入,低电平有效;
WE:写有效信号,输入,低电平有效;
RY/BY:准备好/忙信号,输出“1”为准备好,“0”为忙;
Vpp:编程电压,5V或12V;
Vcc:工作电压,5V;
GND:数字地。
1.3 读和写*作时序图
依据时序图,在读闪存数据时,可将CE信号同OE信号相连,接系统地址译码输出线;WE与系统读/写控制线相连;RP接高电平;Vpp接地;地址线、数据线分别与系统的地址线、数据线相连。当对闪存进行写入时,可将CE信号同系统地址译码输出线相连;WE与系统读/写控制线相连;RP接高电平;Vpp接Vcc;RY/BY接系统的某一输入口,系统通过此信号口检测闪存的内部状态,以匹配系统处理器与闪存的时序;OE接系统的某一输出口,当对闪存进行写*作时,系统输出高电平。
28F016S5闪存内部提供了一个用户命令接口(CUI),这是系统处理器与闪存内部*作的接口。同时,它还有内部写状态机(WSM),能够识别系统处理器命令实现块擦除、写入等*作。另外,还提供了状态寄存器,用于标识各种*作的结果。
2. 对28F016S5编程的硬件连接
一般地,对闪存的编程是通过通用编程器来实现的。作者在日前开发的TMS320C32 DSP图像处理板上,使用了一片闪存28F016S5用于存储图像处理程序,利用该板及仿真软件直接对28F016S5编程,获得了成功。这不仅节省了购买通用编程及接插件的费用,还减少了对用户程序进行格式转换的麻烦,节省了系统开发的时间。在28F016S5 DSP仿真环境下直接对28F016S5进行编程的系统硬件原理图如图3所示。
仿真器一端通过仿真信号线与图像处理板上的TMS320C32 DSP芯片相接,另一端通过接口板与PC机相接;地址译码电路由PLD实现;图像处理板上扩充的32位RAM是由4片8位的RAM芯片组成,其中RAM0的数据线接DSP的D0~D7;OE接DSP的STRB0_B0;RAM1的数据线接DSP的D8~D15;OE接DSP的STRB0_B1;RAM2的数据线接DSP的D16~D23,OE接DSP的STRB0_B2;RAM3的数据线接DSP的D24~D31;OE接DSP的STRB0_B3;RAM0RAM3上的地址直接与DSP的地址线相接,写信号WE与DSP的R/W信号相接;片选信号CE与地址译码电路某输出线相接。本图像处理板上扩充的32位RAM的地址为:100000H~17FFFFH。
闪存28F016S5的地址线A0~A20直接与DSP相应的地址线相接,数据线D0~D7直接与DSP的D0~D7相接,写信号WE接DSP的R/W信号。RP、Vpp两信号直接与电源Vcc相接,片选信号CE接地址译码电路某一输出线,在本图像处理板上闪存28F016S5的地址范围为:900000H~AFFFFFH。RY/BY与DSP的XF0相接(XF0应设置为输入口),输出使能信号OE与DSP的XF1相接(XF1应设置为输出口)。
3. 在DSP仿真环境下对28F016S5的软件编程
对闪存28F016S5编程的基本思想是:将用户程序(如图像处理程序)编译链接生成OUT目标文件后,在DSP仿真环境下,装载到本图像处理板上的RAM中的某区域,如起始地址为100000H的区域;然后将写入控制程序装载到RAM的另一个区域,如起始地址为170000H的区域,应保证两个程序没有重叠(只需在这两个程序的链接命令文件中定义好装载起始地址即可)。最后运行该写入控制程序,从RAM中100000H单元开始,逐字地将用户程序写入闪存28F016S5中。
需要说明的是,在对闪存28F016S5写入之前,应对其原有内容进行擦除,擦除是以块为单位进行的,64kB为一块,2MB共32块。只需对某块中某任意单元先后写入20H和D0H两数即可将该块擦除。另外,对闪存28F016S5中任一单元写入数据,均应先写入10H或40H。尤其应该注意的是DSP与闪存28F016S5的时序匹配问题,因此,在对闪存28F016S5任一单元写入前,都必须先判断RY/BY的状态,当它为高电平时,表示闪存28F016S5已准备好,可以向它写入数据,低电平时则不能写入。从RAM单元中取出的数据为32位,而闪存28F016S5的数据宽度为8位,其数据线与DSP低8位数据线相连,因此,从RAM中取出的每一个数据需要通过移位的办法向闪存28F016S5写4次。
对闪存28F016S5编程进行控制的程序并不复杂,源程序如下:
·DATA ;定义数据段
OFFSET·WORD 10000H ;擦除时,地址的增量为64k(每块为64k)
ADDR_S ·WORD 100000H ;用户程序存放的起始地址
ADDR_F ·WORD 900000H ;闪存28F016S5的起始地址
LENGTH· WORD 20H ;用户程序长度-1,这里假定为20H
·TEXT ;定义代码段
LDI 20H,IOF ;设置XF0为输入口,XF1为输出口
;对闪存28F016S5原有内容进行擦除
LDI @ADDR_F,AR0 ;闪存28F016S5起始地址赋给AR0 |