如上图所示:小页nand容量=528b * 32页 * 4096块 = 528m bits.可用512m bits.即64m.
下图为英文原文pdf资料截图。
注:nandflash的命令,数据,地址都通过8个i/o口输出。
(1)小页nand。
,一页大小为(512 16)528字节(byte).将一页分为3个区:a区为0~255字节,b区为256~511字节,c区为512~527字节。访问某页时,需要选定特定的区:命令00h让地址指针指向a区,01h指向b区,50h指向c区。
nand flash的写操作是以页为单位的,但是可以写一页中的一部分。发出命令80h后,紧接着发出4个地址序列,然后向flash发送数据,然后发出命令10h启动写操作。
(2)大页nand
s3c2440 nandflash控制器介绍:
nand flash控制器提供几个寄存器来简化对nand flash的操作。比如要发出读命令,只需往nfcmd寄存器写入0即可,nand flash控制器会自动发出各种控制信号。
1、操作方法概述
访问nand flash时需要先发出命令,然后发出地址序列,最后读/写数据;需要使用各种使能信号来分辨是命令、地址还是数据。s3c2410的nand flash控制器提供了nfconf、nfcmd、nfaddr、nfdata、nfstat和nfecc等6个寄存器来简化这些操作。s3c2440的nand flash控制器则提供了nfconf、nfcont、nfcmmd、nfaddr、nfdata、nfstat和其它与ecc有关的寄存器。对nand flash控制器的操作,s3c2410和s3c2440有一些小的差别:有些寄存器不一样,有些寄存器内容不一样,这在实例程序中会体现出来。
nand flash的读写操作次序如下:
(1)设置nfconf(对于s3c2440,还要设置nfcont)寄存器,配置nand flash。
(2)向nfcmd寄存器写入命令,这些命令可以参考表8.2。
(3)向nfaddr寄存器写入地址。
(4)读/写数据:通过寄存器nfstat检测nand flash的状态,在启动某个操作后,应该检测r/nb信号以确定该操作是否完成、是否成功。
2.下面讲解这些寄存器的功能和用法:
1)nfconf:nand flash配置寄存器
这个寄存器在s3c2410、s3c2440上功能有所不同。
s3c2410的nfconf寄存器被用来使能禁止nand flash控制器、使能禁止控制引脚信号nfce、初始化ecc,设置nand flash的时序参数等。
(2)nfcont:nand flash控制寄存器,s3c2410没有这个寄存器。
被用来使能/禁止nand flash控制寄存器,使能/禁止控制引脚信号nfce、初始化ecc。它还有其它功能,在一般的应用中用不到,比如锁定nand flash。
(3)nfcmd:nand flash命令寄存器
对于不同型号的flash,操作命令一般不一样。对于本板使用的k9f1208u0m,可参考表8.2。
(4)nfaddr:nand flash地址寄存器。
当写这个寄存器时,它将对flash发出地址信号。
(5)nfdata:nand flash数据寄存器。
只用到低8位,读、写此寄存器将启动对nand flash的读数据、写数据操作。
(6)nfstat:nand flash状态寄存器
只用到位0,0:busy,1:ready
读nandflash的步骤:
①设置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)
『本文转载自网络,九游会j9的版权归原作者所有,如有侵权请联系删除』