哈尔滨工业大学通信技术研究所312信箱150001 胡永庆 田日才 |
摘 要: 介绍了闪速内存的使用方法,并给出了单片机与闪速内存接口和程序设计中应注意的关键技术。
|
闪速内存(Flash Memory)以其集成度高、制造成本低、使用方便等诸多优点广泛地应用于办公设备、通信设备、医疗设备、家用电器等领域。利用其信息非易失性和可以在线更新资料参数特性,可将其作为具有一定灵活性的只读存储器使用。
|
1 单片机与闪速内存硬件接口的关键技术 生产闪速内存的半导体公司主要有美国的Intel、AMD公司和日本的Sharp、Fujitsu公司,这四家公司生产的闪速内存的市场占有份额相当大。表1列出了四家公司生产的主要型号的闪速内存的性能指针。 |
![]() |
从表1中可以看出,不同厂家的闪速内存的工作电压和编程擦除电压是不一样的,同时资料位的长度也是不一样的。由于目前国内应用广泛的单片机仍然是8位的MCS-51系列单片机,16位的单片机种模拟较少,而且工作电压在低电压(2.7~3.6V)的单片机又是寥寥无几。能否用市场上常见的普通8位单片机来设计一个与大多数闪速内存接口的电路呢?答案是肯定的。我们用普通的8位单片机AT89C52设计了一个与闪速内存TE28F160B3的接口电路,AT89C52是ATMEL公司生产的与MCS-51系列单片机兼容的8位单片机,它内部有一个16K 的E2PROM程序内存,它的工作电压是5V。TE28F160B3是INTEL公司生产的容量为16M位、数据总线宽度为16位的闪存内存,它的工作电压为2.7~3.6V。需要指出的是,虽然TE28F160B3的工作电压为2.7~3.6V,但是其各引脚的工作电压范围却在-0.5V~5.0V,各引脚高电平工作电压不能超过5.5V,这样就使得我们可以使用AT89C52来设计与TE28F160B3的接口电路。该接口电路如图1所示。 |
![]() |
由于AT89C52是8位单片机,而TE28F160B3是16位数据总线,我们使用了两片74HC244和两片74HC373来完成8位和16位的资料转换。当AT89C52往TE28F160B3写资料时,首先单片机将高8位资料写入到锁存器74HC373-1中。其中74HC373-1锁存信号W373由译码器GAL16V8输出,然后单片机开始执行对TE28F160B3写资料操作,低8位资料由AT89C52的P0口直接写入TE28F160B3,而锁存在74HC373-1中的高8位资料通过缓冲器74HC244-1写入到TE28F160B3的DQ8~DQ15总线上。当AT89C52从TE28F160B3读数据时,读出的高8位资料先锁存到74HC373-2上,然后通过缓冲器74HC224-2读入到AT89C52中。TE28F160B3的存储容量为16M位,有20根地址线A0~A19,而AT89C52一共才有16根地址线。因此利用AT89C52的地址线A15、A14和A13经译码作为两片74HC244、两片74HC373和TE28F160B3的锁存信号和片选信号。这样地址线只剩下A0~A12,为此利用一片计数器4HC4040作为地址线A13~A19,从而就解决了AT89C52的寻址问题。
|
2 单片机与闪速内存程序设计的关键技术 由于生产闪速内存的半导体公司众多,即使是同一公司的闪速内存也是型号众多、千差万别。为使程序设计尽可能地适用于大多数的闪速内存,需注意以下几个关键技术。 2.1器件自动识别 器件自动识别要识别出器件使用的命令集、内部数组结构参数、电气和时间参数及器件所支持的功能。器件自动识别的方法有两种:如果闪速内存支持CFI功能,可以直接通过CFI获得器件的各种参数;如果闪速内存不支持CFI功能,可以写器件识别命令,然后从器件中读取产品的生产厂家和器件代码,根据生产厂家和器件代码从程序中建立的器件参数表中读取器件的各种参数。器件自动识别的流程图如图2所示。 |
![]() |
正确识别器件之后,就可以根据器件的命令集对器件进行各种操作。对闪速内存的所有操作都是通过芯片的命令用户接口CUI实现的。通过CUI写入不同的控制命令,闪速内存就从一个工作状态转移到另一个工作状态。其主要的工作状态是:读存储单元操作、擦除操作和编程操作。 2.2 读存储单元操作 在闪速内存芯片上电以后,芯片就处于读存储单元状态,也可以通过写入复位命令进入读存储单元状态,读存储单元的操作与SRAM相同。 2.3 擦除操作 在对闪速内存芯片编程操作前,必须保证存储单元为空。如果不空,必须对闪速内存芯片进行擦除操作。由于闪速内存采用模块分区的数组结构, 使得各个存储模块可以被独立地擦除。当给出的地址是在模块地址范围之内且向命令用户接口写入模块擦除命令时,相应的模块就被擦除。要保证擦除操作的正确完成,必须考虑以下几个参数:(1)该闪速内存芯片的内部模块分区结构。(2)擦除电压Vpp。(3)整片擦除时间和每个模块分区的擦除时间参数。上面三个参数在器件识别中获得。 2.4 编程操作 闪速内存芯片的编程操作是自动字节编程,既可以顺序写入,也可指定地址写入。编程操作时注意芯片的编程电压Vpp和编程时间参数,这两个参数也可以在器件识别中获得。 上面,我们给出了单片机与闪速内存硬件接口电路和软件编程设计中应注意的关键技术问题。硬件上主要考虑芯片的工作电压和编程电压,软件上要考虑到器件的内部结构、使用命令集和时间参数等因素。随着闪速内存器件朝着容量越来越大、工作电压越来越低、支持共同的接口标准的方向发展,将会使闪速内存硬件接口和软件编程设计越来越容易,也会使闪速内存的应用更加广泛。 |
[1]. MCS-51 datasheet https://www.dzsc.com/datasheet/MCS-51_477840.html. |
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。