一 NAND Flash概括
NAND Flash充当硬盘的角色,NAND Flash主要分为以下两类,
SLC(single level cell):单层式存储
MLC(multi level cell):多层式存储
MLC对比SLC
SLC访问速度一般比MLC快三倍以上 SLC可以进行十万次的擦写,MLC可以进行一万次,MLC功耗比SLC高15%左右
访问方式内存采用的是统一编址,NAND Flash采用的是独立编址,第一传地址给CPU控制器,第二传命令给控制器,第三传数据给控制器
二 NAND Flash驱动设计_读
根据NAND Flash的芯片手册,可以看出页读中I/Ox的编码步骤
首先发送命令00h,然后发送地址,发送地址先发送列地址,后发送行地址。其次发送命令0x30,等待RnB信号,最后读取数据。除此之外,还需要加入一些通用步骤,选中NAND Flash芯片,清除RnB信号,在最后需要取消选中NAND Flash芯片。所以基本步骤是
1 选中芯片
2 清除RnB
3 发出命令
4 发出列地址
5 发出行地址
6 发出命令
7 等待RnB信号
8 读数据
9 取消片选
如何选中NAND Flash芯片
选中NAND Flash芯片,就是往NFCONT这个寄存器中第一位写入0。
void select_ship(void)
{
NFCONT &= ~(1<<1);
}
如何发送命令
NFCMMD(八位)寄存器就是存放发送给NAND Flash的命令的,命令本身传进来后送到NFCMMD寄存器中。
void nand_cmd(unsigned char cmd)
{
NFCMMD = cmd;
}
如何发送地址
NFADDR(八位)往这个寄存器中写入地址,按页读没有偏移,所以列地址为0,有两个列地址都为0。有三个行地址。由READ OPERATION时序图中看出有两个列地址和三个行地址。