关于NAND Flash
S5PV210的NAND Flash控制器有如下特点:
- 支持512byte,2k,4k,8k的页大小
- 通过各种软件模式来进行NAND Flash的读写擦除等
- 8bit的总线
- 支持SLC和MCL的NAND Flash
- 支持1/4/8/12/16bit的ECC
- 支持以字节/半字/字为单位访问数据/ECC寄存器,以字为单位访问其他寄存器。
程序例子:
/*nand.c*/
// NAND Flash初始化函数nand_init(),代码如下
void nand_init(void)
{
// 1. 配置NAND Flash
NFCONF = (TACLS<<12)|(TWRPH0<<8)|(T WRPH1<<4)|(0<<3)|(0<<2)|(1<<1)|(0<<0);
NFCONT =(0<<18)|(0<<17)|(0<<16)|(0<<10)|(0<<9)|(0<<8)|(0<<7)|(0<<6)|(0x3<<1)|(1<<0);
// 2. 配置引脚
MP0_1CON = 0x22333322;
MP0_2CON = 0x00002222;
MP0_3CON = 0x22222222;
// 3. 复位
nand_reset();
}
第一步 配置NAND Flash
主要是设置NFCONF和NFCONT两个寄存器步骤:
NFCONF寄存器
AddrCycle = 1,When page size is 2K or 4K, 1 = 5 address cycle,GEC210的NAND Flash的页大小为2k,所有是5个地址周期;
PageSize = 0,When MLCFlash is 0, the value of PageSize is as follows: 0 = 2048 Bytes/page,Mini210S使用的是SLC NAND Flash且每页大小为2k;
MLCFlash = 0,在此使用的是SLC NAND Flash;
TWRPH1/TWRPH0/TACLS是关于访问时序的设置,需对照NAND Flash芯片手册设置,这里不再详细解释,分别取TWRPH1=1,TWRPH0=4,TACLS=1;
ECCType0/MsgLength,我们的裸机代码没有使用到ECC,所有不用设置这两个标志。
、