这篇文章不是介绍 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的那么 肯定有一个写周期。我们需要注意的是,写是在上升沿有效还是下降沿有效。
时序图如下:
1 这里是命令锁存是时序,那么我们要注意的其实就只有 CLE 为高电平期间这段时序。(写命令啊,CLE有效时(高电平)指示现在的数据其实命令)ALE此时一定为低电平我们可以不关心他
2 所以,CLE为 低电平的时期,其他大部分引脚上都是 灰色的阴影,这代表我们不需要关心这段时期这些引脚的电平
3 那么 这个数据是什么时候被nand flash读取到的呢, 注意到 nWE信号 在上升沿有一个贯穿所有其他引脚时序的竖线(这好像是叫生命线?我也不清楚)
这就是说明,写入的数据(命令也是数据啊,只是可以通过CLE有效来区分)是在 WE的上升沿有效。
也就是说,虽然 WE是在低电平有效,但并不是说 WE一变成低电平,命令就被锁存了(即真正获得命令)而是在 WE 的上升沿,命令才真正被锁存。
知道了上面这三点,也就知道了一个大概,那么剩下的图中也只剩那些 txx 的标号。明显它指的是时间,但是具体指什么时间呢。
指的就是箭头两边所指的两条 竖线之间的时间。(在每个信号的跳变沿,都有小竖线)
剩下的就是这些时间到底是代表什么了。这里没什么难的,刚接触的觉得看不懂。是因为之前从来没接触过。(就像单片机刚学的时候不也是各种不懂,原因就是我们从没接触过)。
这些时间标号,在数据手册的前面都有 说明
比如 tCLS tCLH 从数据手册中我们可以看到 分表代表的 CLE建立时间,和CLE信号保持时间。
简单点你可以理解为,我让 CLE引脚 变成高电平,总得给人间一点时间去变成高电平吧。总不能瞬间就变成高电平