第八章nand flash控制器 |
flash存储器的可靠性需要考虑3点:位反转、坏块、
和可擦除次数
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
一页528字节,分为a(0~255)、b(256~511)、
c区(512~527)
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
发出80h、4个地址序列及最多528字节数据之后,
发出命令字11h,仅在第4页的最后使用10h替代11h,
来启动flash内部的写操作,
此时可通过71h获知这些写操作是否完成
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
(11)读状态命令
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
8.1.4
s3c2440 nand flash 的读写操作次序:
1.设置NFCONF、NFCONT 寄存器,配置NANDlash
2.向NFCMD寄存器写入命令
3.向NFADDR寄存器写入地址
4.读/写数据:通过 寄存器NFSTAT检测NAND FLASH的状态,在启动某个操作后,应该检测r/
Nb信号以确定该操作是否完成、是否成功。
nfconf
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
设置nandflash的时序参数tacls、twrph0、
twrph1,设置数据位宽;还有一些只读位
nfcont
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
被用来使能/禁止nand flash 控制器、使能/禁止控制引脚信号nFCE、初始化ecC.
NFCMD
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
对于不同型号的flash,操作命令不同
nfaddr
写这个寄存器时,将对flash发出地址信号
nfdata
只用低8位,读、写此寄存器将启动对nand flash的读写操作
nfstat:nand flash状态寄存器
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
只用到位0,0:busy;1:ready
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![第八章nand <wbr>flash控制器 第八章nand <wbr>flash控制器](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
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)