由于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上,然后通过缓冲器74HC244-2读入到AT89C52中。TE28F160B3的存储容量为16M位,有20根地址线A0~A19,而AT89C52一共才有16根地址线。因此利用AT89C52的地址线A15、A14和A13经译码作为两片74HC244、两片74HC373和TE28F160B3的锁存信号和片选信号。这样地址线只剩下A0~A12,为此利用一片计数器74HC4040作为地址线A13~A19,从而就解决了AT89C52的寻址问题。
TE28F160B3的供电电源Vcc与AT89C52一样,均接+5V直流电源。但是TE28F160B3的编程电压和擦除电压Vpp必须接+12V。
图1的单片机使用了市场上常见的AT89C52,但在设计中我们推荐使用宽电压范围工作的单片机AT89LV52和地址译码器ATF16LV8,这样就可以使用+3V左右的供电电源。
在生产闪速存储器的半导体公司Intel、AMD、Sharp和Fujitsu中,Intel和Sharp公司的闪速存储器的引脚是一样的,AMD和Fujitsu公司的闪存存储器的引脚是一样的。所以Intel和AMD公司的闪速存储器是不能互换的,如果要互换必须经过一个接口板进行转接。
2 单片机与闪速存储器程序设计的关键技术
由于生产闪速存储器的半导体公司众多,即使是同一公司的闪速存储器也是型号众多、千差万别。为使程序设计尽可能地适用于大多数的闪速存储器,需注意以下几个关键技术。
2.1 器件自动识别
器件自动识别要识别出器件使用的命令集、内部阵列结构参数、电气和时间参数及器件所支持的功能。器件自动识别的方法有两种:如果闪速存储器支持CFI功能,可以直接通过CFI获得器件的各种参数;如果闪速存储器不支持CFI功能,可以写器件识别命令,然后从器件中读取产品的生产厂家和器件代码,根据生产厂家和器件代码从程序中建立的器件参数表中读取器件的各种参数。器件自动识别的流程图如图2所示。