Nand Flash的概述
nandflash主要以page(页)为单位进行读写,以block(块)为单位进行擦除。每一页中又分为main区和spare区,main区用于正常数据的存储,spare区用于存储一些附加信息,如块好坏的标记、块的逻辑地址、页内数据的ECC校验和等。
先看下电路原理图
从原理图可以看出:
在DATA0~DATA7上既传输数据,又传输地址,也传输命令:
当ALE为高电平时传输的是地址。
当CLE为高电平时传输的是命令。
当ALE和CLE都为低电平时传输的是数据。
假设烧写NAND FLASH,把命令、地址、数据发给它之后,NAND FLASH肯定不可能瞬间完成烧写的,怎么判断烧写完成?
通过状态引脚RnB来判断:它为高电平表示就绪,它为低电平表示正忙。
看一下NAND的引脚:
根据NAND FLASH的芯片手册,一般的过程是:
- 发出命令
- 发出地址
- 发出数据/读数据
相应的命令字如图:
s3c2440来说,内部集成了一个NAND FLASH控制器,CPU只需操作NAND FLASH控制器,就实现对NAND FLASH的操作。
NAND Flash控制器提供了NFCONF、NFCONT、NFCMMD、NFADDR、NFDATA、NFSTAT和其他一些寄存器。
NAND FLASH控制器的时序,是为了让NAND FLASH外设工作起来,假如外接不同的 NAND FLASH外设,那么它的操作时序可能就会不同,所以对Nand Flash控制器的设置也不同。
需要根据不同的nand flash,设置nand flash控制器。
看一下nand flash控制器时序:
由图可知,需要设置nand flash控制器的TACLS、TWRPH0、TWRPH1。
TACLS、TWRPH0、TWRPH1分别是NFCONF寄存器的某几位。
看一下nand flash芯片的时序:
分析:
依次看这3张图
图1 ,TACLS是CLE / ALE使能之后,过多久nWE使能。就对应图2中nand flash芯片的时序中的tCLS和tALS减去tWP。再看图3,tCLS、tALS、tWP最小都为12ns;也就是TACLS可以为12-12=0。
图1,TWRPH0是nWE的使能时间。对应图2中的tWP。再看图3,为12ns。
图1,TWRPH1是nWE失能之后,过多久CLE / ALE失能。就对应图2中nand flash芯片的时序中的tCLH、tALH。再看图3ÿ