ARM裸机编程系列----nandflash

本文介绍了S5PV210处理器中NAND Flash控制器的特点,包括512byte到8k的页大小支持、8bit总线和SLC/MCL兼容性。详细步骤涵盖了NAND Flash的配置、复位、读ID、擦除、读和写操作。在初始化阶段,重点阐述了NFCONF寄存器的配置,并提供了NAND Flash操作的实现代码。
摘要由CSDN通过智能技术生成

关于NAND Flash

S5PV210的NAND Flash控制器有如下特点:

  •  支持512byte,2k,4k,8k的页大小
  •  通过各种软件模式来进行NAND Flash的读写擦除等
  •  8bit的总线
  •  支持SLC和MCL的NAND Flash
  • 支持1/4/8/12/16bit的ECC
  • 支持以字节/半字/字为单位访问数据/ECC寄存器,以字为单位访问其他寄存器。
注意:在此使用的GEC210的NAND Flash类型为SLC,大小为512MB,型号为K9K8G08U0A。所以本章的内容是针对SLC类型的NAND Flash(包括256M/512M/1GB等),并不适用MLC类型的NAND Flash。


程序例子:
/*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,所有不用设置这两个标志。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值