这篇**不是介绍 nand flash的物理结构和关于nand flash的一些基本知识的。你需要至少了解 你手上的 nand flash的物理结构和一些诸如读写命令 操作的大概印象,你至少也需要看过 s3c2440中关于nand flash控制寄存器的说明。 由于本人也没有专门学过这方面的知识,下面的介绍也是经验之谈。 这里 我用的 K9F2G08-SCB0 这款nand flash 来介绍时序图的阅读。不同的芯片操作时序可能不同,读的命令也会有一些差别。 当然其实有时候像nand flash这种 s3c2440内部集成了他的控制器的外设。具体到读写操作的细节时序(比如 CLE/ALE的建立时间,写脉冲的宽度。数据的建立和保持时间等),不明白前期也没有多大的问题。 因为s3c2440内部的nand flash控制器 做了大部分的工作,你需要做的基本就是设置 几个时间参数而已。然后nand flash会自动进行这些细节操作。 当然如果处理器上没有集成 nand flash的控制器 那么久必须要自己来写时序操作了。所以了解最底层的时序操作总是好的
但是上层一点的,比如读写操作的步骤时序(比如读操作,你要片选使能,然后发命令,然后发地址,需要的话还需发一个命令,然后需要等待操作完成,然后再读书数据)。 是必须要明白的。这都不明白的话,怎么进行器件的操作呢
也就是说 s3c2440 可以说在你设置很少的几个时间参数后,将每一个步骤中 细微的操作都替你做好了。(比如写命令,你只要写个命令到相应寄存器中,cpu内部就会协各个引脚发出 适应的信号来实现写命令的操作)。 而我们所需要做的 就是 把这些写命令,写地址,等待操作完成。等步骤组合起来 。从而完成一个 读操作
就像上面说的,虽然我们不会需要去编写每个 步骤中的最细微的时序。 但是了解下。会让你对每个操作步骤的底层细节更加明了
先来看一个命令锁存的时序。也就是上面说的 读 nand flash操作中不是有一个 写命令步骤吗。那么这个步骤具体是怎么实现的。 首先 我们肯定是要片选 nand flash。只有选中芯片才能让他工作啊 nand flash是通过 ALE/CLE (高电平有效)来区分数据线上的数据时命令(CLE有效),地址(ALE有效)还是数据(CLE/ALE都无效)。 那么这里既然是写命令 那么就一定是 CLE有效(高电平) ALE无效(低电平)。 同样命令既然是写给nand flash的那么 肯定有一个写周期。我们需要注意的是,写是在上升沿有效还是下降沿有效。
|