nand flash (k9f5608)驱动编程

nand flash (k9f5608)驱动编程
1.nand flash的引脚
nand flash比较重要的几个引脚如下
I/O引脚:对于该款flash芯片I/O引脚有8个0-7,有的芯片有16个0-15
CLE:指令传输使能(指令可以锁存在nand flash的指令寄存器中)
ALE:地址传输使能(地址可以锁存在nand flash的地址寄存器中)
CE:片选,低有效
2.nand flash的控制
nand flash是通过向I/O传输数据进行控制的。传输的数据有两种,一种是先传输的命令,另一种是后传
输的地址。
3.k9f5608的地址传输
k9f5608是三星公司的一款32兆8位的nand flash芯片。需要三个周期将地址通过I/O传输到nand flash芯
片。
首先了解一下存储布局,最下面的一层是--页,一页由512字节的数据块和16字节的oob块组成。其中,数
据块用来存放数据,oob块用来存放该flash页的信息。中间的一层是块,一块由32个页组成。最上面的一 层是设备,一个设备由2048个块组成。
接下来说明它的地址传输,前面说过要分多个周期传送。
首先传送页内的偏址:最底层的页内偏址,一页是512字节,所以最大是511。
下面传送页地址,分3个周期传送
第1个周期传输页地址的0-7位。
第2个周期传输页地址的9-16位。
第3个周期传输页地址的17-24位。
这里要说明的是,第8位是由指令决定的,不需要传输。具体的看下面指令的传输说明。
4.k9f5608的指令传输
k9f5608的指令集有12条指令,具体可以看芯片说明。这里只是总的说一下。
指令分1个周期和2个周期指令两种。1个周期的只需要传送一次,2个周期的要传送2次。
比如:page program指令,是2个周期的,要实现这个指令的功能,首先传送80h,再传送10h,由于I/O是
8位的,正好。
再比如:reset指令,是1个周期的,只需要传输FFh即可。
这里重点说的一下的是read1和read2指令。read1是1周期指令,但是有两个指令00h和01和。对于页大小
是512字节的k9f5608来说,8位的寻址空间是256,所以用00h来寻址前256字节空间,01h来寻址后256字节 。这样就对应了前面的页地址传输的第8位,如果是前256字节空间,就自动置0,如果是后256字节空间就 自动置1,所以,页地址的第8位由指令决定,不需要传输。read2是1周期指令,是用来读oob的。其他的 指令都比较简单,对应着手册看就行了。
5.驱动编程思路
基于以上的分析,驱动编程分如下几个要点:
(1)read和write函数的实现要记得先传输指令再传输地址,将buf中的数据写入flash或者将flash中的
数据读入buf即可。这里如果定义了ecc就要用到read2来读oob,oob中记载着ecc的信息,具体看手册。
(2)由于有的nand flash芯片页大小是256,有的是512所以命令运行前要进行判断。
(3)read1和read2的作用不止是读取数据而已,在读完后它将指针指到区域的第一个字节,所以在进行
page program等命令的时候先要运行read命令,让指针指到该区域的第一个字节。
暂时就这么多,多了看得别人也烦。:)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值