第八章nand flash控制器 |
flash存储器的可靠性需要考虑3点:位反转、坏块、 和可擦除次数





一页528字节,分为a(0~255)、b(256~511)、 c区(512~527)


发出80h、4个地址序列及最多528字节数据之后, 发出命令字11h,仅在第4页的最后使用10h替代11h, 来启动flash内部的写操作, 此时可通过71h获知这些写操作是否完成

(11)读状态命令

8.1.4
s3c2440 nand flash 的读写操作次序:
1.设置NFCONF、NFCONT 寄存器,配置NANDlash
2.向NFCMD寄存器写入命令
3.向NFADDR寄存器写入地址
4.读/写数据:通过 寄存器NFSTAT检测NAND
FLASH的状态,在启动某个操作后,应该检测r/ Nb信号以确定该操作是否完成、是否成功。
nfconf

设置nandflash的时序参数tacls、twrph0、 twrph1,设置数据位宽;还有一些只读位
nfcont


被用来使能/禁止nand flash 控制器、使能/禁止控制引脚信号nFCE、初始化ecC.
NFCMD

对于不同型号的flash,操作命令不同
nfaddr
写这个寄存器时,将对flash发出地址信号
nfdata
只用低8位,读、写此寄存器将启动对nand flash的读写操作
nfstat:nand flash状态寄存器

只用到位0,0:busy;1:ready


8.2.1 读nandflash 步骤
1.设置nfconf
tacls=0,twrph0=3,twrph1=0, 所以nfconf=0x300
2.设置nfcont
nfconf=(1<<4)|(1<<1)|(1<<0)
3.复位nandflash
nfcont&=(1<<1) //发出片选信号
nfcmd=0xff(reset 命令)//reset命令
nfcont|=0x2 //禁止nand flash
4.发出读命令
nfcont&=~(1<<1)
nfcmd=0
5.send addr
nfaddr=addr&0xff
nfaddr=(addr>>9)&0xff
nfaddr=(addr>>14)&0xff
nfaddr=(addr>>25)0xff
6.循环查询nfstat位0,直到他等于1, 这时就可以读数据了
7.连续读nfdata寄存器512次得到一页数据
8.禁止nandflash片选信号
nfcont|=(1<<1)