加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

第八章nandflash控制器

发布时间:2020-12-15 18:09:33 所属栏目:百科 来源:网络整理
导读:第八章nand flash控制器 flash存储器的可靠性需要考虑3点:位反转、坏块、 和可擦除次数 一页528字节,分为a(0~255)、b(256~511)、 c区(512~527) 发出80h、4个地址序列及最多528字节数据之后, 发出命令字11h,仅在第4页的最后使用10h替代11h, 来启动

第八章nand flash控制器

flash存储器的可靠性需要考虑3点:位反转、坏块、 和可擦除次数

第八章nand?<wbr>flash控制器

第八章nand?<wbr>flash控制器



第八章nand?<wbr>flash控制器

第八章nand?<wbr>flash控制器

第八章nand?<wbr>flash控制器

一页528字节,分为a(0~255)、b(256~511)、 c区(512~527)

第八章nand?<wbr>flash控制器

第八章nand?<wbr>flash控制器

发出80h、4个地址序列及最多528字节数据之后, 发出命令字11h,仅在第4页的最后使用10h替代11h, 来启动flash内部的写操作, 此时可通过71h获知这些写操作是否完成
? ? (7)cp-back-program:00h、8ah、10h
? ? ? 先发00h,4个源地址序列, 此时源页的528字节数据很快就被全部读入内部寄存器; 接着发出8ah,随之发出4个目的地址序列, 最后发出命令字10h启动对目的页的写操作,写的过程中, 使用70h查询是否完成
? ? ? (8)cp-back-program(dummy): 00h、03h、8ah、11h
? ? ? ? 先发00h、源页地址, 使得源页的528字节数据被读入所在的plane的寄存器, 对于随后的plane的源页, 发出03h和相应的地址将数据读入该plane寄存器; 按照前述说明读出最多4页的数据到寄存器后,发出8ah、 目的地址、11h,最后一页用10h代替11h以启动写操作。
? ? ? (9)block erase :60h、d0h
? ? ? ? ? 此命令用于擦除nand flash块(block),发出命令字60h之后, 发出block地址。

? ? ? (10)multi-plane block erase:60h---60h D0h
? ? ? ? ? 此命令用于同时擦除不同plane的block块, 发出命令字60h之后,紧接着发出block地址序列, 最多4个block地址,最后发出命令字d0h启动擦除操作

第八章nand?<wbr>flash控制器

(11)读状态命令
? ? 1.read statues:70h
? ? ? 2.read-multi-planes status:71h

第八章nand?<wbr>flash控制器

8.1.4
s3c2440 nand flash 的读写操作次序:
1.设置NFCONF、NFCONT 寄存器,配置NANDlash
2.向NFCMD寄存器写入命令
3.向NFADDR寄存器写入地址
4.读/写数据:通过 寄存器NFSTAT检测NAND FLASH的状态,在启动某个操作后,应该检测r/ Nb信号以确定该操作是否完成、是否成功。

nfconf

第八章nand?<wbr>flash控制器

设置nandflash的时序参数tacls、twrph0、 twrph1,设置数据位宽;还有一些只读位
nfcont

第八章nand?<wbr>flash控制器

第八章nand?<wbr>flash控制器

被用来使能/禁止nand flash 控制器、使能/禁止控制引脚信号nFCE、初始化ecC.


NFCMD

第八章nand?<wbr>flash控制器

对于不同型号的flash,操作命令不同
nfaddr
写这个寄存器时,将对flash发出地址信号
nfdata
只用低8位,读、写此寄存器将启动对nand flash的读写操作
nfstat:nand flash状态寄存器

第八章nand?<wbr>flash控制器

只用到位0,0:busy;1:ready

第八章nand?<wbr>flash控制器


第八章nand?<wbr>flash控制器

8.2.1 读nandflash 步骤
1.设置nfconf?
tacls=0,twrph0=3,twrph1=0, 所以nfconf=0x300
2.设置nfcont
nfconf=(1<<4)|(1<<1)|(1<<0)
3.复位nandflash
nfcont&=(1<<1) ? //发出片选信号
nfcmd=0xff(reset 命令)//reset命令
nfcont|=0x2? //禁止nand? flash
4.发出读命令
nfcont&=~(1<<1)
nfcmd=0?
5.send addr?
nfaddr=addr&0xff
nfaddr=(addr>>9)&0xff
nfaddr=(addr>>14)&0xff
nfaddr=(addr>>25)0xff
6.循环查询nfstat位0,直到他等于1, 这时就可以读数据了
7.连续读nfdata寄存器512次得到一页数据
8.禁止nandflash片选信号
nfcont|=(1<<1)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读