【FLASH存储器系列十二】Nand Flash芯片使用指导之二

news2025/8/3 19:59:01

      

目录

1.1 芯片指令集

1.2 READ PAGE(00h–30h)

1.3 READ PAGE CACHE SEQUENTIAL (31h)

1.4 READ PAGE CACHE RANDOM (00h-31h)

1.5 PROGRAM PAGE(80h-10h)

1.6 PROGRAM PAGE CACHE (80h-15h)

1.7 ERASE BLOCK (60h-D0h)


 

        上一篇分享了MT29F8G08AJADAWP芯片的功能特性,今天继续分享此芯片的相关操作指令。

1.1 芯片指令集

        芯片支持ONFI 1.0的相关指令,如下图所示。

        下面挑选几项常用指令进行分析。

1.2 READ PAGE(00h–30h)

        READ PAGE(00h–30h):读page命令将页面从NAND闪存阵列复制到其各自的缓存寄存器,并启用数据输出(注意没有经过数据寄存器)。当裸片(LUN)准备就绪(RDY=1,ARDY=1)时,才能接受读命令。要从NAND闪存阵列读取页面,先将00h命令写入命令寄存器,然后将n个地址周期写入地址寄存器,并以30h命令结束。当数据从存储阵列传输到缓存寄存器时,选定的裸片(LUN)将在tR内为busy状态(RDY=0,ARDY=0)。主机判断数据传输是否准备好有两种办法,一是通过监控R/B#,二是可以通过读状态命令(70h,78h)判断,当读到RDY = 1, ARDY= 1时,主机需要再发送READ MODE(00h)命令禁用状态输出并启用数据输出,当主机请求数据输出时,输出从指定的列地址开始。

        数据输出时RANDOM DATA READ (05h-E0h)命令可以被执行。

        当内部ECC使能时,在数据传输完成时要使用READ STATUS (70h)命令来判断是否发生了传输错误。

        当芯片有多个裸片(LUN)时,在执行die间交错操作之时,在在发出READ MODE(00h)命令之前,必须使用READ STATUS ENHANCED(78h)命令来选中其中一个die,以避免总线冲突。

       如下为读page操作时序图:

        如下为带内部ECC的读操作时序图

1.3 READ PAGE CACHE SEQUENTIAL (31h)

        READ PAGE CACHE SEQUENTIAL (31h):此命令在当前页从缓存寄存器输出时,将block内的下一页数据读取到数据寄存器中(注意这里有数据寄存器,数据寄存器和缓存寄存器不是一个东西)。当裸片(LUN)准备就绪(RDY=1,ARDY=1)时,该命令可以被接受。在读取页面缓存(31h,00h-31h)操作(RDY=1和ARDY=0)期间,该命令也可以被接受。

        将31h写入命令寄存器,发出此命令后,R/B#变为低电平,裸片(LUN)在tRCBSY时间内处于繁忙状态(RDY=0,ARDY=0)。tRCBSY之后,R/B#变为高,裸片(LUN)忙于缓存操作(RDY=1,ARDY=0),这表明缓存寄存器可用,并且指定的页正在从NAND闪存阵列复制到数据寄存器。此时,数据可以从缓存寄存器的列地址0开始输出。随机数据读取(05h-E0h)命令可以用于更改从缓存寄存器输出的数据的列地址。

        READ PAGE CACHE SEQUENTIAL(31h)命令可用于跨越block边界。如果在当前block的最后一页读入数据寄存器之后发出读取页缓存序列(31h)命令,则读取的下一页将是下一个逻辑block中的page。如果是跨die读取,则此命令无法实现,应使用READ PAGE CACHE LAST(3Fh)命令。

        如下为顺序读缓存页时序图:

1.4 READ PAGE CACHE RANDOM (00h-31h)

        READ PAGE CACHE RANDOM (00h-31h):此命令将指定的块中的页读入数据寄存器,同时从缓存寄存器输出前一页。当die(LUN)准备就绪(RDY=1,ARDY=1)时,该命令被接受。在读取页面缓存(31h,00h-31h)操作(RDY=1和ARDY=0)期间,它也可以被(LUN)接受。

        要发出此命令,需将00h写入命令寄存器,然后将n个地址周期写入地址寄存器,最后将31h写入指令寄存器。指定地址中的列地址将被忽略。裸片(LUN)地址必须与先前的READ PAGE(00h-30h)命令或先前的READPAGE CACHE RANDOM(00h-31h)命令(如果适用)匹配。

        发出此命令后,R/B#变为低电平,在tRCBSY时间段内,die(LUN)处于繁忙状态(RDY=0,ARDY=0)。tRCBSY之后,R/B#变为高,die(LUN)忙于缓存操作(RDY=1,ARDY=0),这表明缓存寄存器可用,并且指定的页正在从NAND闪存阵列复制到数据寄存器。此时,数据可以从缓存寄存器的列地址0开始输出。随机数据读取(05h-E0h)命令可以用于更改从缓存寄存器输出的数据的列地址。

        如下为随机读缓存页时序图:

1.5 PROGRAM PAGE(80h-10h)

        PROGRAM PAGE(80h-10h):此命令使主机能够向缓存寄存器输入数据,并将数据从缓存寄存器移动到选定die(LUN)阵列中的指定块和页地址。当裸片(LUN)准备就绪(RDY=1,ARDY=1)时,该命令可以被接受。当裸片(LUN)忙于编程页面缓存(80h-15h)操作(RDY=1,ARDY=0)时,它也可以被接受。

        要将页数据输入缓存寄存器并将其移动到指定块和页面地址的NAND阵列,需将80h写入命令寄存器。除非此命令前面有PROGRAM PAGE TWO-PLANE(80h-11h)命令,否则向命令寄存器发出80h将清除选定目标上的所有缓存寄存器内容。然后写入包含列地址和行地址的n个地址循环。随后是数据输入周期。串行数据从指定的列地址开始输入。在数据输入周期的任何时间,可以发出随机数据输入(85h)和内部数据输入程序(85h)命令。数据输入完成后,将10h写入命令寄存器。传输数据时,选定LUN将变忙(RDY=0,ARDY=0)tPROG的时间。

        为了确定数据传输的进度,主机可以监视目标的R/B#信号,也可以使用状态操作(70h、78h)。当裸片(LUN)就绪(RDY=1,ARDY=1)时,主机应检查FAIL位的状态。

        在具有多个裸片(LUN)的芯片中,在交错裸片(多LUN)操作期间和之后,必须使用READ STATUS ENHANCED(78h)命令仅选择一个裸片进行状态输出。使用READ STATUS(70h)命令可能会导致多个裸片(LUN)响应,从而导致总线争用。

        PROGRAM PAGE(80h-10h)命令为双平面编程操作的最终命令。前面是一个或多个PROGRAM PAGE TWO-PLANE(80h-11h)命令。数据从所有寻址平面的高速缓存寄存器传输到NAND阵列。主机应使用状态操作(70h、78h)检查操作状态。启用内部ECC时,阵列编程时间的持续时间为tPROG_ECC。在tPROG_ECC期间,当错误检测完成时,内部ECC生成奇偶校验位。

        如下为页编程时序图:

1.6 PROGRAM PAGE CACHE (80h-15h)

        PROGRAM PAGE CACHE (80h-15h):此命令下主机将输入数据到缓存寄存器,芯片将缓存寄存器的中的数据复制到数据寄存器,然后将数据寄存器的数据移动到选中的存储阵列page中。在数据复制到数据寄存器中后,缓存寄存器可以支持下一个PROGRAM PAGE(80h-10h)和PROGRAM PAGE CACHE (80h-15h)命令,当裸片(LUN)准备就绪(RDY=1,ARDY=1)时,它可以接受PROGRAM PAGE CACHE(80h-15h)命令。当PROGRAM PAGE CACHE(80h-15h)命令操作执行期间,裸片(LUN)也可以接受此命令(就是指数据复制到数据寄存器中后,可以再发此命令往缓存寄存器写数据,这个操作不受上一页数据从数据寄存器移动到存储阵列的影响)。

        要将数据输入到缓存寄存器并将其移动到指定块和页面地址的NAND阵列,需将80h写入命令寄存器。除非此命令前面有PROGRAM PAGE TWO-PLANE(80h-11h)命令,否则向命令寄存器发出80h将清除选定目标上的所有缓存寄存器内容。

        然后写入包含列地址和行地址的n个地址循环。随后是数据输入周期。数据将从指定的列地址开始输入。在数据输入周期的任何时间,可以发出随机数据输入(85h)和内部数据输入程序(85h)命令。当数据输入完成时(指的是输入到缓存寄存器完成,这段时间为tCBSY),此时将15h写入命令寄存器,在tCBSY这段时间内,所选LUN将处于繁忙状态(RDY=0,ARDY=0),以允许数据寄存器被上一个页缓存编程命令所用,将数据从缓存寄存器复制到数据寄存器,然后开始将数据寄存器内容移动到指定的页和块地址。

        如下为页缓存编程时序图:

1.7 ERASE BLOCK (60h-D0h)

        ERASE BLOCK (60h-D0h):此命令可以擦除指定的block。在die准备好(RDY = 1, ARDY = 1)时命令可以被接受。

        要擦除块,先将60h写入命令寄存器。然后写入包含行地址的三个地址周期,列地址忽略。最后将D0h写入命令寄存器。擦除块时,选定的裸片(LUN)将在tBERS时间段内处于忙(RDY=0,ARDY=0)状态。

        如下为块擦除时序图:

        指令太多就不一一列举了,大家可以到数据手册上进行查看,今天的分享就到这里,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch深度学习实战lesson26

第二十六课 GoogLeNet 这节课学习Googlenet , 虽然 nin 现在几乎没有被使用,但是 Googlenet 还是在大量的被使用。在比如说 Google 内部当然是用的挺多的,在外面也是被经常使用。这个网络当时候出来的时候也是吓了大家一跳。 如上图所示&…

到底该怎么学python啊?

前言 大家都说找工作有金九银十,经过了金九银十之后,很多小伙伴都纷纷入职了各家企业,在各个企业中扮演者不同的角色,其中我接触最多的就是算法工程师和Python开发工程师,也跟其他企业的相关技术负责人交流过&#xf…

11月25日:tp框架中的架构,配置,路由,控制器

tp框架的主要内容 架构: https://static.kancloud.cn/manual/thinkphp5/118010 配置: 配置文件主要位置 可以使用Config::load()调用thinkphp中的静态方法,显示出config.php的主要内容 路由: 图中可见 使用url::调用静态方法…

Spring Boot集成Easypoi导出Excel

目录 1.引入Maven依赖 2.实体类属性加上Excel注解 3.导出示例 4.导出结果 5.注解Excel说明 1.引入Maven依赖 <!--easypoi依赖&#xff08;表格导入导出&#xff09;--> <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-sp…

【愚公系列】2022年11月 数据库-数据库文档生成工具SmartSQL使用

文章目录前言一、数据库文档生成工具SmartSQL使用1.SmartSQL的功能介绍2.运行3.连接数据库4.分组管理5.数据表相关功能6.导入导出7.文档截图7.1 CHM文档7.2 MD文档ABTABAC_MAPPING 7.3 EXCEL文档7.4 PDF文档7.5 HTML文档7.6 XML文档7.7 JSON文档前言 SmartSQL 是一款方便、快捷…

Photographic Tone Reproduction for Digital Images

Abstract 经典的摄影任务是将现实世界亮度的潜在高动态范围映射到摄影印刷品的低动态范围。将数字图像映射到低动态范围的打印或屏幕的计算机图形从业者也面临着这种音调再现问题。本文介绍的工作利用了经过时间考验的摄影实践技术来开发新的色调再现算子。特别是&#xff0c;…

进程的调度

目录 1. 进程的概念 2.进程是如何被调度的 2.1描述 2.2 组织 2.3 PCB中描述的进程特征 2.4 进程调度的相关属性&#xff08;接2.3&#xff09; 3. 内存管理 1. 进程的概念 一个跑起来的程序就称之为进程(没跑起来就不是进程) 进程是操作系统分配资源的基本单位。 2.进程…

说说原型(prototype)、原型链

1、原型 prototype 和 proto 每个对象都有一个__proto__属性&#xff0c;并且指向它的prototype原型对象 每个构造函数都有一个prototype原型对象 prototype原型对象里的constructor指向构造函数本身 看一下代码就清楚了 function Person(nick, age){this.nick nick;this.…

数据结构学习笔记(Ⅳ):串

目录 1 串 1.1 定义与基本操作 1.定义 2.基本操作 1.2 串的存储结构 1.顺序存储 2.链式存储 3.基于顺序存储实现基本操作 2 串的朴素模式匹配算法 2.1 朴素模式匹配算法 2.2 KMP算法 1.优化思路 2.计算next数组 2.3 KMP算法优化 1 串 1.1 定义与基本操作 1.定义…

02.OpenWrt-进入开发板系统

02.OpenWrt-进入开发板系统 进入系统就是连接到系统shell,可是输入命令.说到shell第一个想到windows系统的PowerShell,在windows系统上多使用图形界面的方式进行与系统交互,毕竟windows的精髓就是图形界面,很少使用PowerShell命令.其实PowerShell的功能也非常强大,有时候记住一…

Flutter高仿微信-第38篇-单聊-转账

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取小视频的部…

【C++】Cmake使用教程(看这一篇就够了)

文章目录引言一 环境搭建二 简单入门2.1 项目结构2.2 示例源码2.3 运行查看三 编译多个源文件3.1 在同一个目录下有多个源文件3.1.1 简单版本3.1.1.1 项目结构3.1.1.2 示例代码3.1.1.3 运行查看3.1.2 进阶版本3.1.2.1 项目结构3.1.2.2 示例源码3.1.2.3 运行查看3.2 在不同目录下…

热门编程语言那么多,该选择哪个

编程语言那么多&#xff0c;该怎么选呢&#xff1f;无论是对找工作、还是打算转行新领域的同学们&#xff0c;起初都会有这样的困扰。这时候了解清楚编程语言的种类&#xff0c;到底该选哪个方向&#xff1f;将来能从事哪些岗位的工作&#xff1f;就比较重要了。与其盲目随从他…

CAS号:376364-38-4,rCRAMP (rat)

rCRAMP (rat) 是一种大鼠组织蛋白酶相关的抗菌肽&#xff0c;有助于大鼠脑肽/蛋白质提取物的抗菌活性。rCRAMP (rat) 是大鼠中枢神经系统先天免疫系统的关键参与者。rCRAMP (rat) is the rat cathelin-related antimicrobial peptide. rCRAMP (rat) contributes to the antibac…

计算机网络协议------从入门到深化

计算机网络通信 什么是通信协议 简单来说&#xff0c;通信协议就是计算机之间通过网络实现通信时事先达成 的一种“约定”&#xff1b;这种“约定”使那些由不同厂商的设备&#xff0c;不同CPU及不 同操作系统组成的计算机之间&#xff0c;只要遵循相同的协议就可以实现通 信。…

数据治理容易走进哪些误区?

在业界&#xff0c;大家都为如何做好数据治理而感到困惑。数据治理工作一定要先摸清楚数据的家底&#xff0c;规划好路线图&#xff0c;再进行决策。不然很容易走进误区中&#xff0c;无法自拔。下面总结了数据治理的7个常见误区&#xff0c;并给出一定建议&#xff0c;希望给予…

ERD Online 4.0.3_fix 元数据在线建模(免费、私有部署)

❝ 修复数据源导入的元数据&#xff0c;在没有中文注释修改的时候&#xff0c;导致表消失修复页面刷新导致404修改是否在关系图中显示的提示一键部署增加两种部署方式&#xff1a;IPPORT、DOMAIN增加手动部署方式、极大程度的实现部署定制化❞以 「root」 用户登录 Linux 主机执…

面试:dumpsys meminfo 内存信息含义

查看内存信息&#xff1a; adb shell dumpsys meminfo dumpsys meminfo显示的信息如图所示&#xff1a; 这里仅介绍我们需要重点关注的字段&#xff1a; Dalvik Heap&#xff1a;虚拟机占用的内存&#xff0c;可以理解为Java层占用的内存。Native Heap&#xff1a;Native层占…

python 循环引用的解决方法

目录 1、问题描述 2、原因 3、示例 4、解决办法 1、问题描述 编写python代码&#xff0c;运行中出现了&#xff1a;‘most likely due to a circular import ’ 这样的报错。 2、原因 循环引用问题&#xff0c;即A引用了B&#xff0c;B又引用了A&#xff0c;造成循环引用…

ctp交易接口股票怎么查询历史数据?

针对于ctp交易接口股票历史数据的查询&#xff0c;其基本原理就是利用api接口开发子系统最终就是开发完成并暴露一个标准的HTTPAPI接口&#xff0c;并将接口注册和接入到API网关。API设计和开发的核心思想仍然应该是基于领域对象建模驱动&#xff0c;通过领域对象建模很好的实现…