新闻  |   论坛  |   博客  |   在线研讨会
Nand Flash存储结构及控制方法(K9F1G08)
hong60104 | 2011-10-10 16:54:22    阅读:35291   发布文章
Nand Flash存储结构及控制方法(K9F1G08)  

 

 
 

一、NAND Flash介绍和NAND Flash控制器的使用
NAND Flash在嵌入式系统中的作用,相当于PC上的硬盘
常见的Flash有NOR Flash和NAND Flash,NOR Flash上进行读取的效率非常高,但是擦除和写操作的效率很低,容量一般比较小;NAND Flash进行擦除和写操作的效率更高,并且容量更大。一般NOR Flash用于存储程序,NAND Flash用于存储数据。
1)NAND Flash的物理结构
笔者用的开发板上NAND Flash型号是K9F1G08,大小为128M,下图为它的封装和外部引脚

Nand Flash存储结构及控制方法(K9F1G08) - cyan - cyan的博客

I/O0-I/O7        数据输入/输出
CLE        命令锁存使能
ALE        地址锁存使能
CE        芯片使能
RE        读使能
WE        写使能
WP        写保护
R/B        就绪/忙输出信号
Vcc        电源
Vss        地
N.C        不接
 
K9F1G08功能结构图如下
 Nand Flash存储结构及控制方法(K9F1G08) - cyan - cyan的博客

K9F1G08内部结构有下面一些功能部件
①X-Buffers Latches & Decoders:用于行地址
②Y-Buffers Latches & Decoders:用于列地址
③Command Register:用于命令字
④Control Logic & High Voltage Generator:控制逻辑及产生Flash所需高压
⑤Nand Flash Array:存储部件
⑥Data Register & S/A:数据寄存器,读、写页时,数据存放此寄存器
⑦Y-Gating
⑧I/O Buffers & Latches
⑨Global Buffers
⑩Output Driver
NAND Flash 存储单元组织结构图如下:
Nand Flash存储结构及控制方法(K9F1G08) - cyan - cyan的博客

K9F1G08容量为1056Mbit,分为65536行(页)、2112列,每一页大小为2kb,外加64字节的额外空间,这64字节的额外空间的列地址为2048-2111
命令、地址、数据都通过IO0-IO7输入/输出,写入命令、地址或数据时,需要将WE、CE信号同时拉低,数据在WE信号的上升沿被NAND FLash锁存;命令锁存信号CLE、地址锁存信号ALE用来分辨、锁存命令或地址。
K9F1G08有128MB的存储空间,需要27位地址,以字节为单位访问Flash时,需要4个地址序列
 
2)NAND Flash访问方法
NAND Flash硬件连接如下图:

Nand Flash存储结构及控制方法(K9F1G08) - cyan - cyan的博客

 NAND Flash和S3C2440的连线包括,8个IO引脚,5个使能信号(nWE、ALE、CLE、nCE、nRE)、1个状态引脚(R/B)、1个写保护引脚(nWP)。地址、数据和命令都是在这些使能信号的配合下,通过8个IO引脚传输。写地址、数据、命令时,nCE、nWE信号必须为低电平,它们在nWE信号的上升沿被锁存。命令锁存使能信号CLE和地址锁存使能信号ALE用来区别IO引脚上传输的是命令还是地址。
 
命令字及操作方法
        操作NAND Flash时,先传输命令,然后传输地址,最后读写数据,这个期间要检查Flash的状态。K9F1G08容量为128MB,需要一个27位的地址,发出命令后,后面要紧跟着4个地址序列。
下图为K9F1G08的命令字

Nand Flash存储结构及控制方法(K9F1G08) - cyan - cyan的博客

下图为K9F1G08的地址序列

Nand Flash存储结构及控制方法(K9F1G08) - cyan - cyan的博客

K9F1G08有2112列,所以必须使用A0-A11共12位来寻址,有65535行,所以必须使用A12-A27共16位来寻址。
 
3)S3C2440 NAND Flash控制器介绍
NAND Flash的读写操作次序如下:
①设置NFCONF配置NAND Flash
②向NFCMD寄存器写入命令
③向NFADDR寄存器写入地址
④读写数据:通过寄存器NFSTAT检测NAND Flash的状态,在启动某个操作后,应该检测R/nB信号以确定该操作是否完成、是否成功。
 
下面介绍这些寄存器:
①NFCONF:配置寄存器
        用来设置NAND Flash的时序参数,设置数据位宽,设置是否支持其他大小的页等。
②NFCONT:控制寄存器
        用来使能NAND Flash控制器、使能控制引脚信号nFCE、初始化ECC,锁定NAND Flash等功能
③NFCMD:命令寄存器
        用来发送Flash操作命令
④NFADDR:地址寄存器
        用来向Flash发送地址信号
⑤NFDATA:数据寄存器
        读写此寄存器启动对NAND Flash的读写数据操作
⑥NFSTAT:状态寄存器
        0:busy,1:ready
 
二、NAND Flash控制器操作实例:读Flash
1)读NAND Flash的步骤
①设置NFCONF
        在HCLK=100Mhz的情况下,TACLS=0,TWRPH0=3,TWRPH1=0,则
        NFCONF = 0x300
        使能NAND Flash控制器、禁止控制引脚信号nFCE,初始化ECC
        NFCONT = (1<<4) | (1<<1) | (1<<0)
②操作NAND Flash前,复位
        NFCONT &= ~(1<<1)        发出片选信号
        NFCMD = 0xff        reset命令
        然后循环查询NFSTAT位0,直到等于1,处于就绪态
        最后禁止片选信号,在实际使用时再使能
        NFCONT |= 0x2        禁止NAND Flash
③发出读命令
        NFCONT &= ~(1<<1)        发出片选信号
        NFCMD = 0        读命令
④发出地址信号
⑤循环查询NFSTAT,直到等于1
⑥连续读NFDATA寄存器,得到一页数据
⑦最后禁止NAND Flash片选信号
        NFCONT |= (1<<1)

参与讨论
登录后参与讨论
当你觉得为时已晚的时候,恰恰是最早的时候!
推荐文章
最近访客