-
这篇文章不是介绍
nand
flash
的物理结构和关于
nand
flash
的一些基本知识的。你需要至少了解
你手上的
nand flash
p>
的物理结构和一些诸
如读写命令
操作的大概印象,你至少也需要看过
s3c2440
中关于
nand
flash
控制寄存器的说明。
<
/p>
由于本人也没有专门学过这方面的知识,下面的介绍也是经验之谈。
这里
我用的
K9F2G08-SCB0
这款
nand flash
来介绍时
序图的阅读。不同的芯片操作时序可能不同,读的命令也会有一些差别
。
当然其实有时候像
nand
flash
这种
s3c2440
p>
内部集成了他的控制器的外设。具体到读写操作的细节时序
(
比如
CLE/ALE
的建立时间,写脉冲的
宽度。数据的建立和保持时间等
)
p>
,不明白前期也没有多大的问题。
因为<
/p>
s3c2440
内部的
nand
flash
控制器
做了大部分的工作,你需要做的基本就是设置
几个时间参数而已。然后
nand
flash
会自动进行这些细
节操作。
当然如果处理器上没有集成
nand
flash
的控制器
那么久必须要自
己来写时序操作了。所以了解最底层的时序操作总是好的
但是上层一点的,比如读写操作的步骤时序(比如读操作,你
要片选使能,然后发命令,然后发地址,需要的话还需发一个命令,然后需要等待操
作完
成,然后再读书数据)。
是必须要明白的。这都不明白的话,怎么进行器件的操作呢
也就是说
s3c2440
可以说在你设置很少的几个时间参数后,将每一个步骤中
p>
细微的操作都替你做好了。(比如写命令,你只要写个命令到相
应寄
存器中,
cpu
内部就会协各个引脚发出
适应的信号来实现写命令的操作)。
而我们所需要做的
就是
把这些写命令,写地址,等待操作完成。等步骤组合起来
。从而完成一个
读操作
就像上面说的,虽然我们不会需要去编写每个
步骤中的最细微的时序。
但是了解下。会让你对每个操作步骤的底层细节更加明了
先来看一个命令锁存的时序。也就是上面说的
读
nand
flash
操作中不是有一个
写命令步骤吗。那么这个步骤具体是怎么实现的。
首先
我们肯定是要片选
nand
flash
。只有选中芯片才能让他工作啊
nand flash
是通过
ALE/CLE (
高电平有效
)
p>
来区分数据线上的数据时命令(
CLE
有效
),地址(
ALE
有效)还是数据(
C
LE/ALE
都无效)。
那么这里既然是写命令
那么就一定是
CLE
有效(高电平)
ALE
无效(低电平)
。
同样命令既然是写给
nand
flash
的那么
肯定有一个写周期
。我们需要注意的是,写是在上升沿有效还是下降沿有效
。
时序图如下:
1
这里是命令锁存是时序,那么我们要注意的其实就只有
CLE
为高电平期间这段时序。(写命令啊,
CLE
有效时(高电平)指示现在的数据其
实命令)<
/p>
ALE
此时一定为低电平我们可以不关心他
2
所以,
CLE
为
低电平的时期,其他大部分引脚上都是
灰色的阴影,这代表我们不需要关心这段时期这些引脚的电平
3
那么
这个数据是什么时候被
nand
flash
读取到的呢,
注意到
nWE
信号
在上升沿有一个贯穿所有其他引脚时序的竖线(这好像是叫生命
线?我也不清楚)
p>
这就是说明,写入的数据(命令也是数据啊,只是可以通过
CLE<
/p>
有效来区分)是在
WE
的上升沿有效。
也就是说,虽然
WE
是在低电平有效,但并不是说
<
/p>
WE
一变成低电平,命令就被锁存了(即真正获得命令)而是在<
/p>
WE
的上升
沿,命令才真正被锁存
。
知道了上面这三点,也就知道了一个大概,那么剩下的图中也
只剩那些
txx
的标号。明显它指的是时间,但是具体指什么时间呢。
指的就是箭头两边所指的两条
竖线之间的时间。(在每个信号的跳变沿,都有小竖线)
剩下的就是这些时间到底是代表什
么了。这里没什么难的,刚接触的觉得看不懂。是因为之前从来没接触过。(就像单片机刚学的时候不也是各种<
/p>
不懂,原因就是我们从没接触过)。
这些时间标号,在数据手册的前面都有
说明
比如
tCLS
tCLH
从数据手册中我们可以看到
分表代表的
CLE
< br>建立时间,和
CLE
信号保持时间。
简单点你可以理解为,我让
CLE
引脚
变成高电平,总得给人间一点时间去变成高电平吧。总不能瞬间就变成高电平
不过从
时序图中我们
能看到更多的端倪,
之前不是说过
WE
的上升沿上不是有一个最长贯穿其他信号线的
竖线吗。
我们说他指示了,
数据
(命
令也是数据)
是在上升沿被锁存的,在
WE
p>
的上升沿,我写到数据线上的命令数据才真正被锁存(接收),但是
我们注意到
CLE
信号在
WE
上升沿之前有就有效了。
< br>
所以我们说,
在命令数据真正被锁存之前,
CLE
有效的那段
tCLS
时间叫做
CLE
信号建立时间。
WE
上升沿后。命令已经被接受了,但这时候
CLE
其实可以变为无效了,因为已经获取到命令了
但是他并没有立刻结束,而是
Tclh
时间之后才结束。那么我们
称这段
时间
tCLH
为
CLE
保持时间
。
那么再根据手册中的说明
tCS
表示
片选信号建立时间,
tCH
表示片选信号保持时间
tDS
表示数据建立时间,
tDH
表示数据保持时间
< br>
这里我们看到一个小规律,在数据手册中
以
S
结尾的时间通常指的是建立时间,
以
H
结尾的时间指的是保持时间
这里命令锁存的时序就分析完了。我们再来看看
地址锁存时序图,这个图有点复杂,
因为
nand
flash
的
特性是
地址周期通常需要好几个,就是一个地址是分几次发送的
再给出数据手册中对应时间标号的说明
同样我们按照上面分析的步骤
1
这里是地址锁存是时序,那么我们要注意的其实就只有
ALE
为高电平期间这段时序。(写命令啊,
ALE
有效时(高电平)指示现在的数据其
实是地址)
CLE
此时一定为低电平,可以不用管
2
所以,
ALE
为低电平的时期,其他大部分引脚上都是
灰色的阴影,这代表我们不需要关心这段时期这些引脚的电平
3
同样
WE
的上升沿有一个贯穿其他信号线的长竖线,这也是代表数
据(这里其实是地址)在上升沿被锁存
那么剩下的也好理解
tCLS
这个我们不需要关心,因为
CLE
压根就是无效的。
tCS
就像之前分析的,它是指
CE
片选信号在
WE
上升沿也就是锁存地址之前的有效时间,也就是
CE
建立时间
tWC
呢
?
不知道?
不知道
看手册啊,前面也说过这些时间标号在手册中都会给出。
从上面手册的解释我们看到,它指的是一个写周期的时间
tWP
写脉冲宽度(也就是
WE
是低电平有限,
twp
< br>指低电平持续时间,就是有效时间)
tWH
好理解了,就是高电平时间
ALS
这不就是
地址信号
ALE
建立时间嘛
ALH
ALE
信号有效保持时间啊
TDS TDH
数据建立和保持时间
就像上面对
命令时序的分析,这里
信号的
建立
和
保持时间都是以
数据被
锁存分界点
< br>(WE
上升沿
)
看到这里相信仔细看的人,应该大
致该如何看一个时序图了,但是这里
我们牵涉到的
无非都是一些
上面
建立
/
保持时间。
复杂点的呢。
下面就来看一个复杂点的时序图,其实也不复杂,主要是说明
如何在不看手册就能知道
txx
指的是什么时间
这个时序其实并不复杂,只是他不是像上面分析的那样都是一些
建立时间和保持时间。这里牵涉到跟多的时间标号
不过就像前面说的
.
看手册!
手册里对每个时间参数都有
说明。不过初学者通常即使看手册,对这些时间参数也是不知道是什么意思。
这里我们看手册前,先来自己分析下。方法会了,手册就成了验证你对不对的东西了,而不是你寻
找答案的东西。
TRC
这个参数有点简单。看他的范围
是
一个
RE
周期
的时间,那么就跟前面的
tWC
应该是一样的。那它应该代表的就是
RE
信号的一
个周期时间(读信号的一个周期)
TREA
呢?
看标号看不出所以然,那么我们就看他的起始和结束时间
从时序图能看到,这个指的是从
RE
有效(变低)
到数据出现之间的
时间。
那么
tREA
可想而知就应该是
读信号有效到数据被读之间的时间
后面的都是这个同样的分析方法
比如最后的那个
tRHZ
是从
RE
无效(高电平)到数据线变成高阻态
之间的时间(数据线画在中间表示的是高阻态)
看下手册中的解释
也基本就是这个意思
到这里
对
于时序图怎么看,相信大家都应该能理解了。甚至可能连手册都不用看,就知道他是什么意思了。因为我们能从<
/p>
时间的起始地址来推
测时间标号的意思
上面这些分析,都是很底层的操作,如果我们使用
s3c2440
这种高级的处理器
这些时序操作我们根本不需要去实现,顶多也就往几个寄存器
中
设置一下上面说的一些时间
然后,
CPU
中的
nand flash
控制器会自动完成上面所的所有操作。但是还需要了解的原因是,如果你碰到一个没
有
nand flash
控制器的处理器
怎么办,那你只能亲自实现这些
具体的
写命令,写地址。等等
单元操作。
然后才能将这些单元操作组合成
读数据,写数据等操作(上面说过
比如读操作
他并不是一个简单的命令
而是一系列操作,你要片选使能,然
后发命令
(
读命令
)
,
然后发地址(要读的数据的地址),需要的话还需发一个命令,然后需要等待操作完成,然后读书数据)
说完了
这些具体的单元操作,那么我们再来看看一个
读操作
具体需要哪些步骤。也就是我们需要真正必须掌握的时序操作
对于我这款
nand flash
读操作时序如下
我们要注意的主要是
最下面一行
即
I/Ox
信号线的状态,他指示了
读操作需要哪些,单元步骤。
1
首先
我们看到
有一个
0x00
是什么?数据?地址?命令?
看
ALE/CLE
< br>线啊,这两根线不是决定了现在的数据的类型嘛
顺着往上看,我们知道
0x00
是在
CLE<
/p>
有效期间的数据那么它就是一个命令
2
然后是
address(5Cycle)
即五个地址序列
(
这款
nand
flash
指定读数据的地址时要发送五个地址序列
)
,
往上看,
是在
p>
ALE
有效期间的数据,
那么应该就是地址
了
p>
(对于这五个地址,前面两个是列地址,后面三个是行地址。在
na
nd flash
的物理结构中
行地
址对应的某一页,列地址就对应
这一页中的某一列)
3
接着又是
0x30
,此时
CLE
有效,那么就是命令了(也就是说这款
nand
flash
的读操作需要两个命令)。
但是之后数据并未立刻出来,我们看到在到
DATA Output
即数据输出之前还有一段时间,为什么
有这段时间?
往上看
R/nB
这个数据线上说明了原因,这段时间内它是低电平
即指示现在
处于
忙碌状态,还未准备好数据输出
。为什么
会这样?
因为你
写了
一个命令,写了要读数据的地址,又写了一个命令。
你总要给
cpu
一些时间去处理这些命令吧,
R/nB
为低电平这段时间就是
p>
在处理这些命令(实际上是根据命令将你定位的那一页数据读到内部寄存器中),
等
R/nB
变成高电平了,就指示命令处理完毕,现在数据也就可以读出来了
。
综上我们从手册中我们就知道了读操作的具体步骤,
1
首先
nand flash
p>
也是一个外设,要访问他就需要片选它,所以在执行时序图上的步骤之前需要片选
nand flash.
2
看后面就是安装时序图来了,看时序图
!
第一步先是发送一个命令
0x00.
3
看时序图!
然后发送五个地址序列(先发送两个列地址,在发送三个行地址(即页地址))
4
看时序图!
接着再是一个命令
0x30.
5
看时序图!
R/nB
引脚为低表示现在正忙,正在处理这些命令,那就要等待
R/nB
引脚变为高电平
6
看时序图!
这个时候就可以读数据了
7
一次读操作结束了
nand
flash
暂时是不需要使用了,那么别忘了应该
取消片选信号。
至于这每一个步骤中具体的时序,
c
pu
中的
nand flash
控制器
会帮我们完成。我们要做就是设置几个时间参数
-
-
-
-
-
-
-
-
-
上一篇:常用词根大全
下一篇:ST意法半导体芯片替换与方案