1.7.2_NAND_FLASH时序及初始化_P

对存储芯片的编程,一般都有如下步骤:

  1. 初始化(对Nand Flash而言,就是初始化主控芯片的Nand Flash控制器)
  2. 识别(读取ID)
  3. 读(一般一次读一个页Page)
  4. 写(一般一次写一个页Page)
  5. 擦除(一般一次擦除一个块Block,一个块通常是64个页)

如果可以正确识别,即读取到正确的ID,那么说明我们的初始化步骤是正确的,并且Nand Flash芯片也是可以正常工作的。

下面开始第一步初始化,这一步主要是

  1. 设置Nand Flash的时序;
  2. 使能Nand Flash控制器;

先找到S3C2440芯片手册中Nand Flash的存储时序。
在这里插入图片描述
这里有三个时间参数,分别是TACLS,TWRPH0,TWRPH1。从时序图分析,TACLS为CLE/ALE拉高后对酒可以使能WE,TWRPH0为WE低电平(使能)的持续时间,TWRPH1则是WE拉高之后多久拉低CLE/ALE。 每款Nand Flash的上述时间可能是不同的,这需要根据对应的Nand Flash芯片的数据手册来设置。

在S3C2440芯片手册中搜索这三个参数,发现是在NFCONF寄存器中设置。

在这里插入图片描述
S3C2440开发板上搭载的Nand Flash控制芯片型号为K9F2G08U0C,查找对应的芯片手册,搜索它的AC Timing Characteristics和时序图,可以获得上述参数的信息。
在这里插入图片描述

在这里插入图片描述
下面来分析这三个参数的设置。首先是TACLS,表示CLE/ALE拉高后多久可以使能WE,对比Nand Flash的时序图可以知道,这段时间为tCLS - tWP = 12 - 12 = 0ns;然后是TWRPH0,表示WE的使能持续时间,为tWP = 12ns;最后是TWRPH1,表示WE释放后过多久可以拉低ALE/CLE,为tCLH = 5ns。值得注意的是,Nand Flash芯片手册中的ALE和CLE的时间参数是相等的,时序也相同,可能是所有的Nand Flash芯片都遵循这个时序和设定吧。

计算完参数后,要把对应的参数写入寄存器中去,其中HCLK = 1000 / 100M = 10ns(1M=10^6)。所以TACLS设为0,TWRPH0要大等于12ns,所以TWRPH0设为1,TWRPH1要大等于5ns,所以TWRPH1设为0。
在这里插入图片描述
再修改一下寄存器的定义,命令,地址,数据,状态这四个寄存器,改为按字节操作。
在这里插入图片描述

这样,Nand Flash的时序就设置好了,接下来要使能Nand Flash控制器,使能是在NFCONT寄存器中设置,前面的锁和中断,ECC先不用管。
在这里插入图片描述如下,bit0设为1表示使能Nand Flash控制器,bit1位Nand Flash的片选,这里我们没有操作Nand Flash,先设为1不使能,bit4为初始化ECC,之后我们会用到ECC,这里设为1初始化ECC。
在这里插入图片描述
最后,下面就是我们Nand Flash的初始化函数,设置了时序并且使能了控制器。
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值