在本章开始之前,我们先来看下ARM11S3C6410内部结构:
本文引用地址:http://www.eepw.com.cn/article/203125.htm
在图中,我们看到ARM11S3C6410内存部分有SRAM、SDRAM、DDR和NANDflash几种类型,关于这几种内存之间的联系可参考ARM11s3c6410系列教程之三内存使用的介绍。从以上几节的介绍可以看出,若ARM11S3C6410设置为NANDflash启动,则NANDflash作为程序暂时储存的场所,我们不能不认真的理解下NANDflash的操作。
在硬件上,使能 NAND Flash时, XSELNAND需保持为高电平,也就是AB16为高电平。
在NAND Flash 控制器图解如下图所示:
在图解中我们可以看出NAND Flash控制器片选信号、命令信号,地址信号,读信号、写信号、空闲/繁忙管脚和8个数据管脚组成,这大大方便了NANDflash的使用和控制。
关于NAND Flash芯片的硬件连接,我们来分析下其连接:
首先,来看下NAND Flash芯片连接图
在硬件连接中,可以看出NANDflash的I/O端口连接只有8位,我们不难想到数据、地址复用的情形。其实,NANDflash的操作也是这样。
其次,我们来分析下NANDflash的操作:
① 通过片选信号CE1和CE2完成NANDFlash的选择;
② NANDFlash操作时序图如下:
由于NANDFlash不能像内存一样直接读写,要先发出命令、再发地址、再读写数据完成相应的操作;
③ 关于命令,地址和数据的传送有以下规则:
CLE = 1, data0~data7上传输的是命令;
ALE = 1, data0~data7上传输的是地址;
CLE/ALE都是0, data0~data7上传输的是数据, nWE = 0, 表示写;
④ ARM11S3C6410发出命令操作:只需要把命令写到NFCMD寄存器中即可完成;
⑤ ARM11S3C6410发出地址:把地址写到NFADDR寄存器;
⑥ ARM11S3C6410发出数据:把数据写到NFDATA寄存器;
⑦ ARM11S3C6410读数据操作:通过读取NFDATA寄存器即可完成数据的读取;
ARM11S3C6410正是有了NFCON,才使对NANDFlash的操作变得更加简单。对于其他的处理器,需要用普通的GPIO按照NANDFlash的操作时序完成相应的操作。