您的位置 首页 主动

Linux驱动之Nand Flash四问,原理、工作方式都包含了

NandFlash是一个存储芯片。那么:这样的操作很理“读地址A的数据,把数据B写到地址A”问1:原理图上的NandFlash和SC2440之间只有数据线,怎么传输地址?答:在Data

  Nand Flash 是一个存储芯片。

  那么:这样的操作很理“读地址A的数据,把数据B写到地址A”

  问1:原理图上的Nand Flash和SC2440之间只要数据线,怎样传输地址?

  答:在Data0-Data7上既传输数据,又传输地址,当ALE为高电平时传输的是地址

  问2:从Nand Flash芯片手册可知,要操作Nand Flash需求先宣布指令,怎样传入指令。

  答:在Data0-Data7既传输数据,又传输地址,也传输指令

  当ALE为高电平时传输的是地址

  当CLE为高电平时传输的是指令

  当ALE和CLE为低电平时传输的是数据

  问3:数据线既接到Nand Flash,也接到NOR Flash,还接到SDRAM等等,怎样防止搅扰?

  答:这些设备,要拜访之前有必要选中

  没有选中的芯片不会作业,适当于没有接相同

  问4:假定烧写Nand Flash,把指令、地址、数据发给它之后,Nand Flash必定不可能瞬间完结烧写的,怎样判别烧写完结?

  答:经过状况引脚RnB来判别:它为高电平表明安排妥当,它为低电平正忙。

  怎样操作Nand Flash呢?

  答:依据Nand Flash的芯片手册,一般的进程是:

  宣布指令

  宣布地址

  读写数据

  以上操作能够从时序图上得到

  咱们先看下nandflash的布线

  有data0 到data7 八根数据线

  nandflash是个存储芯片,那我提出恳求:读地址a的数据,把数据b写到a地址上去

  那么咱们看原理图只看到data0-data7,没有看到地址引脚,那怎样把地址传给咱们的开发板

  复用,这几个引脚即传数据也传地址

  怎样分别是数据仍是地址呢,有个ALE信号,当ALE是高电平时,传输的是地址

  可是它不只只传输地址和数据,还传输指令,在nand flash芯片手册可知,要操作nandflash要先宣布指令,只要八条数据线,怎样传输指令呢???

  当CLE为高电平的时分传输的便是指令,当ALE和CLE都为低电平的时分传输的是数据。

  这个data0 有的开发板不只仅只接nandflash,还有的接norflash等等十分多的当地

  数据线 地址线等即接到nandflash,也接到norflash,还接到sdram,DM9000等等。怎样防止搅扰,比方说我拜访nandflash的时分,norflash就不要给我供给数据

  你就要适当与没接相同,怎样防止搅扰呢???

  便是经过这些设备要拜访之前,有必要选中,什么叫选中呢,他们都有片选信号,就要咱们的片选引脚变为低电平选中,便是cs引脚,没有选中的芯片不会作业,适当于没接相同

  假定烧写nandflash,把数据、指令、地址发给他之后,nandflash必定是不可能瞬间完结的,怎样判别烧写完结,经过状况引脚RnB来判别,它为高电平表明完结安排妥当。为低电平表明正忙

  we和re便是读写信号..

  怎样操作nandflash

  依据nandflash的芯片手册,一般进程是:宣布指令,宣布地址,读写数据。

  nandflash的指令表格如下

  咱们往下看,拿个比方来看,读ID这个比方的时序图

  每个nandflash都会内嵌ID,比方厂家ID啊等等。

  时序图 横轴是时刻,时序图怎样看呢 ,从左往右看。纵向方向便是一列一列 来看

  然后能够看到宣布指令 90,怎样知道的 ,在数据线上宣布90这个值,怎样知道它是指令的,便是CLE是高电平。然后给它一个写脉冲。这个写信号的上升沿nandflash就会把数据存进来,它就知道了我是一个指令。

  然后接着宣布一个0地址,然后就能够读数据了。

  关于咱们芯片来说里边集成了一个nandflash控制器,内部接线。它帮咱们简化了这些操作,

  nandflash 芯片(rus5pv210)

  选中芯片

  发指令的操作 CLE变为高电平把指令值写到NFCMD寄存器里就能够了

  在data0-data7输出指令值

  供给一个写脉冲

  选中芯片

  发地址 ALE输出高电平

  在data0-data7输出地址值把地址写入NFADDR寄存器里就能够了

  供给一个写脉冲

  选中芯片

  发数据 ALE,CLE输出低电平

  在data0-data7输出数据的值把地址写入NFDATA寄存器里就能够了

  供给一个写脉冲

  选中芯片

  读数据 宣布一个读脉冲

  读data0-data7的数据

  咱们能够用uboot体会nandflash的操作

  1.读ID,时序图在上面

  选中

  宣布0x90指令

  宣布地址0x00

  读第一个数据会得到0xEC

  读第二个数据得到device code

  选中的话芯片手册的nand flash章节 能够知道

  选为0为选中

  宣布指令便是把指令写到下面这个寄存器里边去

  同理 地址和数据也是相同寄存器如下

  可是在uboot里边怎样操作呢

  uboot里边有指令能够读内存的

  md.w 0xB0E0_0004 1 这指令表明读 0xb0e00004 读一次

  mw.w 是写指令

  md 内存显现 b是以字节为单位,w是以2字为单位,l是以四字节为单位

  读ID指令流程如图

  读出dc

  咱们验证一下 nandflash里边读ID下面就有这张图 

  完毕读ID的指令 便是NFCMD寄存器等于0xff 便是指令的reset

  2.读数据

  咱们能够依据uboot的nand dump 0指令读取0地址的数据

  咱们来一下nandflash读操作的时序图

  为什么中心有五个地址

  看容量

  读00数据指令如下

  跟上面的输出是相同的

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部