加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

nandflash控制

发布时间:2020-12-15 18:24:22 所属栏目:百科 来源:网络整理
导读:Nand Flash存储结构及控制方法 一、NAND Flash介绍和NAND Flash控制器的使用 NAND Flash在嵌入式系统中的作用,相当于PC上的硬盘 常见的Flash有NOR Flash和NAND Flash,NOR Flash上进行读取的效率非常高,但是擦除和写操作的效率很低,容量一般比较小;NAND

Nand Flash存储结构及控制方法

一、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,下图为它的封装和外部引脚

I/O0-I/O7??????? 数据输入/输出
CLE??????? 命令锁存使能
ALE??????? 地址锁存使能
CE??????? 芯片使能
RE??????? 读使能
WE??????? 写使能
WP??????? 写保护
R/B??????? 就绪/忙输出信号
Vcc??????? 电源
Vss??????? 地
N.C??????? 不接
?
K9F1G08功能结构图如下
?

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 存储单元组织结构图如下:

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和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的命令字

下图为K9F1G08的地址序列

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)

?

?????????????? ----------------文章来源于网络

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读