本篇参考K9F2G08U0M的芯片手册
假定jz2440连接NAND芯片
本文所说的读写操作都是对于2440来说的,请注意分别
NADA FLASH
电路图
描述如下
- IO0——IO7
对于NAND芯片,IO0到IO7可以用做输入指令、地址和数据,也可以发送给2440数据。
引脚
IO0~IO7
- 既可以互传数据,也可以2440给NAND芯片传地址和命令
CE(chip enable)片选
- 高电平时忽略,不回应2440的所有指令
- 低电平,则被选中,回应指令
WP(写保护)
- 当这个引脚为低电平,那么2440只能在NAND上读取。不能写、不能擦除。
R/B(ready/busy output)
- 传输指令、数据给NAND FLASH后,NAND会在内部进行烧写。这个烧写不可能时瞬间完成的,所以要用这个引脚表示状态,是否完成。
- 高电平表示READY,内部操作已经完成
- 低电平表示BUSY,内部还在进进行操作
如何分别IO0~IO7传输的时数据、命令还是地址
CLE、ALE
- 当CLE为高电平时,表示命令
- 当ALE为高电平时,表示地址
- 当CLE和ALE都不为高电平时,表示数据
数据从2440到NAND还是NAND到2440
IO0~IO7上的数据是从2440到NAND还是NAND到2440
RE(读信号)、WE(写信号)
- 当RE为低电平时,数据从NAND到2440
- 当WE为低电平时,数据从2440到NAND
我的理解:读写操作都是2440做的,所以读和写都是对于2440来说的
时序图
发命令
2440发送命令给NAND FLASH
首先看看有哪些命令
- 选中此NAND FLASH芯片,将CE变为低电平为选中
- 片选完毕,CLE电平同时拉高,表示命令
- ALE为低电平,不做任何表示
- IO0对应命令的bit0,IO7对应命令的bit7
- 2440给NAND FLASH,则需要一个写信号,WE为低电平
- NAND在WE的上升沿获取一系列信息,如数据的类型、是否片选、具体的信息
流程如下:
- 1、CE片选——电平拉低
- 2、CLE、ALE信息是命令、地址还是数据
- 3、发送8位信息
- 4、发送写信号
- 5、NAND FLASH在写信号的上升沿获取以上全部信息
发地址
2440发送地址给NAND FLASH
上面这张图看着很乱,实际上不用害怕
和上一栏差不多
步骤如下:
- 1、CE变成低电平,片选
- 2、ALE变为高电平,CLE低电平,表示信息为地址
- 3、发送地址数据
- 4、we拉低,作为写信号。
- 5、在we的上升沿获取一切信息
写数据
2440发送数据给NAND FLASH
步骤如下:
- 1、CE变成低电平,表示片选设备
- 2、CLE、ALE为低电平,表示信息是数据
- 3、IO0~IO7发送8位数据
- 4、发送写信号
- 5、WE的上升沿使,NAND FLASH获取数据的类型,8位数据等信息
细节:在WE下降沿时,IO0~IO7对应bit准备数据,在WE上升沿NAND FLASH获取数据
读数据
步骤如下:
- 1、CE为低电平,片选
- 2、CLE、ALE都为低电平,8位二进制是数据
- 3、RE读信号由高变为低再为高
- 4、在RE变为低电平时,IO0~IO7马上准备数据
- 5、NAND FLASH在RE的上升沿读取以上信息
细节:在RE下降沿时,IO0~IO7对应bit准备数据,在WE上升沿NAND FLASH获取数据
信号间的时序关系
想象一下,在2440向NAND FLASH写操作时,如果WE下降到上升的时间很短,那么NAND FLASH可能反应不过来。
回到前面的时序图
以发命令为例
发送片选信号后,经过tcs后,写信号才能有上升沿
写信号的脉冲宽度位twp
我们可以通过芯片手册查看这些时间信息
时序要求
在上表的 WE Pulse Width可以看到芯片型号的对应最小值时 25ns(纳秒),配置大于他就行了
时序图中的twp、tcs、tch、tcls、tclh等时间参数都是有规定的
2440发出的信号,必须要满足该NAND FLASH的时序要求——即引脚间相互的时序关系
这些值的要求可以从手册中读出来
NAND FLASH控制器
如何控制2440发出的这些信号呢——这就需要根据手册配置NAND FLASH控制器
NAND FLASH控制器中有一系列的寄存器,配置这些寄存器,就可以使2440发出满足对应NAND FLASH芯片时序要求的信号了
接下来大概看一眼
打开对应章节
比如这里就是写信号读信号相关
可以设置TWRPHO、WTWRPH1来设置这些参数
这些参数就和NAND FLASH中WE、RE的twp扯上关系了。
配置寄存器
HCLK表示2440中的某个寄存器
假设HCLK是10ns
那么TWRPH0取2就可以使twp的值大于最小的15ns
那么多时序参数,是否需要每个都弄清?
不用——2440中可配置的参数有限,把这三个配置好就可以了
TWRPH0
——表示WE、RE信号的脉冲
TACLS
——控制CLE、ALE发出后,多久时间读写信号变成低电平
参考上面的时序要求
发现CLE、ALE的setup time的最小值和WE一样
也就是说,CLE、ALE一发出,就可以马上发送读写信号
此NAND FLASH的TACLS可以配置为0
TWRPH1
——读写信号变为高电平后,CLE/ALE还要维持多长时间
查看NAND FLASH的手册发现,CLE/ALE的持续时间至少要5ns
查看2440手册
假设HCLK是100兆,也就是10ns
那么这个值可以取为0,计算得出10ns,满足大于等于5ns
总结
1、看2440手册,确定能设置哪些参数,参数的含义
2、看外设手册(NAND FLASH),确定取值范围
3、计算