历史上的今天
今天是:2025年08月13日(星期三)
2021年08月13日 | 1.7.1_NAND_FLASH操作原理_P
2021-08-13 来源:eefocus

上图为S3C2440的Nand Flash原理图,下面通过几个问题来了解Nand Flash的操作原理。
引脚说明
Nand Flash是一个存储芯片,那么,这样的操作很合理读地址A的数据,把数据B写到地址A。
问1:原理图上Nand Flash和S3C2440之间只有数据线,那么怎么传输地址?
答1:在DATA0~DATA7上分时传输数据和地址;
当ALE = 1时,传输地址;
当ALE = 0时,传输数据。
问2:从Nand Flash芯片手册可知,操作Nand Flash还需要发出命令,怎么传入命令?
答2:在DATA0~DATA7上传输命令。
当CLE = 1时,传命令;
当CLE = 0 且 ALE = 0时,传数据。
问3:数据线既接到Nand Flash,也接到Nor Flash,还接到SDRAM,DM9000等等,那么怎么避免干扰?
答3: 这些设备在访问之前,必须“选中(通过/CS引脚)”,没有选中的芯片不会工作,相当于没接一样。
问4: 假设烧写Nand Flash,把命令,地址,数据发给它之后,Nand Flash肯定不可能瞬间完成烧写的,怎么判断烧写完成?
答4: 通过状态引脚RnB来判断,它为高电平表示就绪,它为低电平表示正忙。
问5: 怎么操作Nand Flash?
答5: 根据Nand Flash芯片手册,一般的过程是:
发出命令;
发出地址;
发出数据/读数据。
还有两个读写信号的引脚,分别是读引脚nFRE和写引脚nFWE,后续会用到。
下图是各个引脚的详细介绍。

操作解析
下面来分析一下怎么发命令,发地址,发数据,读数据,对于S3C2440来说,这些操作都是通过S3C2440内部的Nand Flash控制器完成的。

用UBOOT来体验Nand Flash的操作
1.读ID

上图为Nand Flash芯片手册中,读ID的时序图,根据这份时序图来分析应该怎么读ID。
首先是选中芯片,然后依次发命令,地址,然后再读。
根据S3C2440的芯片手册可知,将NFCONT的bit0设为1表示选中Nand Flash控制芯片,这里我们先读NFCONT的值,然后把bit0置1后再写入即可选中Nand Flash芯片。


下图为选中芯片,先读出NFCONT的值,然后把bit0置1后再写入。

然后,依次发出命令,地址,再读device id等。

读到的device code为DAH,说明Device为K9F2G08U0A。

下面是各个cycle读到的数据的意义:


退出读ID状态,需要发送一个reset命令,命令如下,往任意地址发出一个0xFF命令即可。

2.读内容:读0地址数据
读内容的时序图如下:

需要特别注意的是,发出00H命令后,还需要发出5个地址信号,为什么要发这么多的地址信号?
答: 根据Nand Flash的芯片手册得,该款Nand Flash为256MB。假设只有1条地址线,那么可以表示0或1两个地址;如果有2条地址线,那么可以表示00,01,10,11共4个地址,以此类推,256M=2的28次方,也就是需要28位的数据才可以表示这个地址值。又(28 + 7) / 8 = 4,所以需要4个周期的地址。其中,为了兼容更大容量的存储芯片,就规定了需要发出5个周期的地址。


使用UBOOT命令:nand dump 0读取数据。


先选中芯片:

然后依次操作,由于我们读的是0地址的内容,所以地址值全为0,最后退出选中即可:
史海拾趣
|
最近在研究GPRS与单片机的通信问题.. 在向单片机传送AT指令 有所拨的号码(什么号码?),DNS服务的IP地址(哪里的DNS服务??),GPRS服务提供商的密码(怎么知道提供商的密码??),接入GPRS服务的APN(是什么?cmnet or cmwap?能通用么?)。 还需要建立一 ...… 查看全部问答> |
|
摘 要:文章详细论述了红外遥控数据的调制与编码方式,设计了一种基于MCS - 51 单片机的红 外遥控解码方案,并简要介绍了红外通信抗干扰措施并给出软件设计实例。… 查看全部问答> |
|
我在做一个AT89C52单片机仿真,电路似乎没有问题,但在按了仿真按钮,运行一段时间,就出现以下问题:[SPICE]TRAN:Timestep too small;timestep=1.25e-19;trouble with node#00175?什么原因?好像是要我调步长时间,我在system菜单下的set simulat ...… 查看全部问答> |
|
奇怪的现象 关于ddraw 只有连接activesync的时候才能正常刷屏 windows mobile6.0 系统 使用ddraw ,创建DDSCAPS_PRIMARYSURFACE,然后lock ,写buffer,unlock,这些返回值都是正确的。 但是只有插activesync得时候才能正常刷屏 若不连接activesync:屏幕不会变化,让系统suspand resume 然后看屏幕更新了,但 ...… 查看全部问答> |
|
初接触simens logo!,有个问题请教! 功能为 I1为启动/停止功能接口 . I1高时,Q1送出,反之不送出. 现在要求开机第一次启动时,立即送出Q1, 以后每次启动要延时一段时间再送出,现在的问题不知如何 ...… 查看全部问答> |




