因为你 写了 一个命令,写了要读数据的地址,又写了一个命令。 你总要给 cpu一些时间去处理这些命令吧, R/nB为低电平这段时间就是 在处理这些命令(实际上是根据命令将你定位的那一页数据读到内部寄存器中), 等 R/nB变成高电平了,就指示命令处理完毕,现在数据也就可以读出来了。 综上我们从手册中我们就知道了读操作的具体步骤, 1 首先nand flash 也是一个外设,要访问他就需要片选它,所以在执行时序图上的步骤之前需要片选nand flash. 2 看后面就是安装时序图来了,看时序图! 第一步先是发送一个命令 0x00. 3 看时序图! 然后发送五个地址序列(先发送两个列地址,在发送三个行地址(即页地址)) 4 看时序图! 接着再是一个命令 0x30. 5 看时序图! R/nB 引脚为低表示现在正忙,正在处理这些命令,那就要等待 R/nB 引脚变为高电平 6 看时序图! 这个时候就可以读数据了 7 一次读操作结束了 nand flash 暂时是不需要使用了,那么别忘了应该 取消片选信号。 至于这每一个步骤中具体的时序,cpu中的nand flash控制器会帮我们完成。我们要做就是设置几个时间参数 这里我们反复强调了要看时序图。其实学嵌入式前期对数据手册一定要多看,看多了你就回知道,什么东西的你重点要看的,什么是和你的编程操作无关的你不需要关心。这样后面你才能,拿到一个外设 就能写出他的操作。而不用跟着书背步骤。只要手册在就行了。 上面的步骤,是一个具体的读操作的步骤,不过在使用一个器件之前我们需要初始化一下它。至于初始化也就是设置我们上面多次提到的 我们说过 s3c2440已经帮我做了很多底层的单元操作,我们只需设置几个时间参数 片内的 nand flash就会自动发出相应操作的时序操作 那么到底设置那几个时间呢。 s3c2440 手册上给出了 需要我们设置的几个参数。
从中我们可以看出 第一幅时序图是 命令和地址锁存的时序,第二幅是 数据读取和写入的时序。
可以看出,他们要设置的时间都是一样的。前面分析了那么多,这里应该不难 看出
1 TACLS 很明表示的是 CLE/ALE 的建立时间(这里并不准确,其实是 CLE/ALE有效到 WE 变成低电平之间的时间,但 WE 却是在上升沿才锁存命令/地址) 2 TWRPH0 代表的是 WE 的脉冲宽度,即有效时间 3 TWRPH1 代表的是 CLE/ALE 的保持时间
|