您的位置 首页 测评

S3C2440对Nand Flash操作和电路原理(根据K9F2G08U0A)

S3C2440内部集成了一个Nandflash控制器。S3C2440的Nandflash控制器包含了如下的特性:l一个引导启动单元lNandFlash存储器接口,

S3C2440内部集成了一个Nand flash操控器。S3C2440的Nand flash操控器包含了如下的特性:

l 一个引导发动单元

l Nand Flash存储器接口,支撑8位或16位的每页巨细为256字,512字节,1K字和2K字节的Nand flash

l 软件形式:用户能够直接拜访Nand Flash存储器,此特性能够用于Nand Flash存储器的读、擦除和编程。

l S3C2440支撑8/16位的Nand Flash存储器接口总线

l 硬件ECC生成,检测和指示(软件纠错)。

l Steppingstone接口,支撑大/小端形式的按字节/半字/字拜访。

我用的开发板是天嵌的TQ2440,板子用到的Nand Flash是Samsung公司的K9F2G08U0A,它是8位的Nand flash。本文只介绍Nand Flash的电路原理和Nand Flash的读、写、擦除等根本操作,暂不触及Nand Flash发动程序的问题。

Nand Flash的电路衔接如图 1所示:

图 1 Nand Flash电路原理

上图的左面为K9F2G08U0A与2440的衔接图,原理方面就不多介绍,去看看datasheet估量就懂得了,右边的部分是S3C2440的Nand操控器的装备。装备引脚NCON,GPG13,GPG14和GPG15用来设置Nand Flash的根本信息,Nand操控器经过读取装备引脚的状况获取外接的Nand Flash的装备信息,图 2是这四个装备引脚的界说:

图 2 Nand操控装备引脚信息

因为K9F2G08U0A的总线宽度为8位,页巨细为2048字节,需求5个寻址指令,所以NCON、GPG13和GPG14应该接高电平,GPG15应该接低电平。

K9F2G08U0A没有地址或数据总线,只需8个IO口,这8个IO口用于传输指令、地址和数据。K9F2G08U0A主要以page(页)为单位进行读写,以block(块)为单位进行擦除。每一页中又分为main区和spare区,main区用于正常数据的存储,spare区用于存储一些附加信息,如块好坏的符号、块的逻辑地址、页内数据的ECC校验和等。K9F2G08U0A的存储阵列如图 3所示:

图 3 K9F2G08U0A内部存储阵列

由上图,咱们能够知道:K9F2G08U0A的一页为(2K+64)字节(2K表明的是main区容量, 64表明的是spare区容量),它的一块为64页,而整个设备包含了2048个块。这样算下来一共有2112M位容量,假如只算main区容量则有256M字节(即256M×8位)。

图 4 K9F2G08U0A地址序列

要完结用8个IO口来要拜访这么大的容量,如图 4所示:K9F2G08U0A规则了用5个周期来完结。第一个周期拜访的地址为A0~A7;第二个周期拜访的地址为A8~A11,它作用在IO0~IO3上,而此刻IO4~IO7有必要为低电平;第三个周期拜访的地址为A12~A19;第四个周期拜访的地址为A20~A27;第五个周期拜访的地址为A28,它作用在IO0上,而此刻IO1~IO7有必要为低电平。前两个周期传输的是列地址,后三个周期传输的是行地址。经过剖析可知,列地址是用于寻址页内空间,行地址用于寻址页,假如要直接拜访块,则需求从地址A18开端。因为一切的指令、地址和数据全部从8位IO口传输,所以Nand flash界说了一个指令集来完结各种操作。有的操作只需求一个指令(即一个周期)即可,而有的操作则需求两个指令(即两个周期)来完结。K9F2G08U0A的指令阐明如图 5所示:

图 5 K9F2G08U0A指令表

为了方便运用,咱们宏界说了K9F2G08U0A的常用指令

#define CMD_READ10x00 //页读指令周期1

#define CMD_READ20x30 //页读指令周期2

#define CMD_READID 0x90 //读ID指令

#define CMD_WRITE1 0x80 //页写指令周期1

#define CMD_WRITE2 0x10 //页写指令周期2

#define CMD_ERASE1 0x60 //块擦除指令周期1

#define CMD_ERASE2 0xd0 //块擦除指令周期2

#define CMD_STATUS0x70 //读状况指令

#define CMD_RESET0xff //复位

#define CMD_RANDOMREAD1 0x05 //随意读指令周期1

#define CMD_RANDOMREAD2 0xE0 //随意读指令周期2

#define CMD_RANDOMWRITE 0x85 //随意写指令

接下来介绍几个Nand Flash操控器的寄存器。Nand Flash操控器的寄存器主要有NFCONF(Nand Flash装备寄存器),NFCONT(Nand Flash操控寄存器),NFCMMD(Nand Flash指令集寄存器),NFADDR(Nand Flash地址集寄存器),NFDATA(Nand Flash数据寄存器),NFMECCD0/1(Nand Flash的main区ECC寄存器),NFSECCD(Nand Flash的spare区ECC寄存器),NFSTAT(Nand Flash操作状况寄存器),NFESTAT0/1(Nand Flash的ECC状况寄存器),NFMECC0/1(Nand Flash用于数据的ECC寄存器),以及NFSECC(Nand Flash用于IO的ECC寄存器)。

(1)NFCONF:2440的NFCONF寄存器是用来设置NAND Flash的时序参数TACLS、TWRPH0、TWRPH1。装备寄存器的[3:0]是只读位,用来指示外部所接的Nand Flash的装备信息,它们是由装备引脚NCON,GPG13,GPG14和GPG15所决议的(比方说K9F2G08U0A的装备为NCON、GPG13和GPG14接高电平,GPG15接低电平,所以[3:0]位状况应该是1110)。

(2)NFCONT:用来使能/制止NAND Flash操控器、使能/制止操控引脚信号nFCE、初始化ECC。它还有其他功用,在一般的运用顶用不到,比方确定NAND Flash。

(3)NFCMMD:关于不同类型的Flash,操作指令一般不一样。参阅前面介绍的K9F2G08U0A指令序列。

(4)NFADDR:当写这个寄存器时,它将对Flash宣布地址信号。只用到低8位来传输,所以需求分次来写入一个完好的32位地址,K9F2G08U0A的地址序列在图4现已做了具体阐明。

(5)NFDATA:只用到低8位,读、写此寄存器将发动对NAND Flash的读数据、写数据操作。

(6)NFSTAT:只用到位0,用来检测NAND是否准备好。0:busy,1:ready。

NFCONF寄存器运用TACLS、TWRPH0、TWRPH1这3个参数来操控NAND Flash信号线CLE/ALE与写操控信号nWE的时序联系,它们之间的联系如图6和图7所示:

图6 CLE/ALE时序图

图7 nWE和nRE时序图

TACLS为CLE/ALE有用到nWE有用之间的持续时刻,TWRPH0为nWE的有用持续时刻,TWRPH1为nWE无效到CLE/ALE无效之间的持续时刻,这些时刻都是以HCLK为单位的。经过查阅K9F2G08U0A的数据手册,咱们能够找到并核算与S3C2440相对应的时序:K9F2G08U0A中的Twp与TWRPH0相对应,Tclh与TWRPH1相对应, TACLS应该是与Tcls相对应。K9F2G08U0A给出的都是最小时刻, 2440只需满意它的最小时刻即可。TACLS、TWRPH0、TWRPH1这三个变量取值大一些会更稳妥,在这里,这三个值别离取1,2和0。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/258010.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部