Nand Flash在嵌入式中的地位和PC的硬盘类似,用于保存系统运行所需的操作系统、应用程序、用户数据、运行中所产生的各种数据,以内存不同,掉电后Nand Flash中的数据永久保存。
常用的Flash有两种类型,Nand Flash和Nor Flash,Nor Flash支持XIP,即代码可以在Nor Flash上直接运行,无需复制到内存中,这是由于Nor Flash的接口与RAM完全相同,可以随机访问到任意地址的数据。在Nor Flash上读操作的效率非常高,但写操作和擦出操作效率很低,且容量较小,而Nand Flash的接口是I/O接口,没有单独的数据线和地址线,进行读写数据时需要复杂的时序,Nand Flash进行写和擦除操作的效率比较高,且容量较大,所以一般用于存储数据。
1、Nand Flash的物理结构
命令,地址,数据都是通过8个I/O口输入输出,这种形式减少了芯片的引脚数,同时易于扩展容量。在读写数据时,通过各个锁存器和引脚的状态来区别是地址还是命令或是数据,所以时序复杂,不像Nor Flash。
2、Nand Flash的访问方法
Nand Flash的硬件连线:
Nand Flash与s3c2440的连线比较少:8个I/O引脚,5个使能信号(ALE、CLE、nCE、nRE、nWE),一个状态引脚(R/nB),一个写保护引脚(nWP),地址,数据,命令都是在这些引脚信号的配合下通过8个I/O引脚进行传输。写地址、命令、数据时,nCE,nWE必须是低电平,他们在nWE的上升沿被所存。命令使能所存信号CLE和地址所存信号ALE用来区分I/O上传输的是命令还是地址。
操作Nand Flash时,先传输命令,然后传输地址,最后读/写数据,期间要检查Flash的状态。
Nand Flash的操作次序如下:
1)设置NFCONF和NFCONT寄存器配置Nand Flash。
2)向NFCMD寄存器写入命令。
3)向NFADDR寄存器写入地址。
4)读/写数据:通过NFSTAT寄存器检测Nand Flash的状态,启动某个操作后,应该检测R/nB信号以确定该操作是否完成和成功。
Nand Flash的寄存器介绍:
1)NFCONF:Nand Flash的配置寄存器。
用来使能/禁止Nand Flash控制器、控制引脚信号nFCE,初始化ECC,设置Nand Flash的时序参数等。
2)NFCONT:Nand Flash控制寄存器
其功能和NFCONF类似。
3)NFCMD:Nand Flash的命令寄存器。
4)NFADDR:Nand Flash地址寄存器。
当写这个寄存器时,他将对Flash发出地址信息。
5)NFDATA:Nand Flash的数据寄存器。
只用到低8位,读写此寄存器将启动Nand Flash的读数据和写数据操作。
6)NFSTAT:Nand Flash状态寄存器。
只用到0位:0是busy 1是ready。
初始化Nand Flash:
读Nand Flash的函数:
可以看出,读Nand Flash的操作可分为6步:
1)选择芯片
2)发出读命令
3)发出地址
4)等待数据就绪
5)读取数据
6)结束后,取消片选信号。