当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:阐述了NANDFLASH的工作原理和访问方式,提出了一种基于51内核单片机存储、读取NANDFLASH的实现方法,给出了K9F2G08UXA与单片机的接口电路,同时给出了对K9F2GO8UXA芯片进行读操作、页编程和块擦除等软件操作的响应例程。

引言

闪速存储器(FlashMemory)是一种不挥发性Non-Volatile内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,同时其还具有低功耗、密度高、体积小等优点,这些特性正使得闪存成为各类便携型数字设备的存储介质的基础,而超大容量的闪存芯片更是受到了广大开发者的青睐。NOR和NAND是现在市场上两种主要的非易失闪存技术,NORFLASH带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节;NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同,8个引脚用来传送控制、地址和数据信息。51内核的单片机因受寻址能力的限制,在进行大容量存储应用时,都会选择NANDFLASH来作为存储器件。

1K9F2G08UXAFlashMemory简介

K9F2G08UXA是韩国三星公司生产的256MX8b,并带有8MX8位后备区域的NAND(“与非”)闪速存储器。NANDFLASH结构具有快速重写、高存储容量、回写速度快以及芯片面积小等特点,因此是高数据存储密度的理想解决方案。NANDFLASH型的单元排列是串行的,存储单元被分成页,由页组成块。根据不同容量,块和页的大小有所不同,而组成块的页的数量也会不同。应用NAND的困难在于FLASH的管理和需要特殊的系统接口。K9F2G08UXA就是具有这些特点的FLASHMemory,它的典型编程时间为200us/页(2048B/页),擦除时间为1.5ms/块(64页/块=128KB/块)。页顺序读取时间最小为25ns,随机读取时间最小为25us;其地址复用8个I/O引脚,作为地址输入、输出口和命令输入;片内的写控制器自动完成编程/擦除功能,包括所需的脉冲循环重复、内部校验及数据的加注。

2硬件原理

2.1K9F2G08UXA的结构特点

K9F2G08UXA是由131072行X2112歹U组成的2112Mb存储器,其中64Mb位的后备区域的列地址范围是2048〜2111。2112B的数据寄存器连接着存储器单元阵列,在页读和页编程期间提供了I/O缓冲和内存之间的传送。存储器阵列由以串行方式连接成NAND结构的32个单元构成,每块中有1081344个这样的结构。这些单元均驻留在不同的页上。块是由2个NAND结构形成的64页组成,共有2048个分立的可擦写的128KB块。

闪存芯片的主要命令操作有读、编程和擦除,其中读、编程操作以页为基础,擦除必须以块为单位进行,且不允许逐位擦除。FLASH操作大都需要2个总线周期,如块擦除需要2个总线周期,一个周期是擦除建立,另一个周期是在块地址装入后执行擦除命令。256MB的物理空间需要29位地址线,因此需要5个周期的字节寻址,其顺序是:低位列地址、高位列地址、低位行地址、中位行地址、高位行地址。页读和页编程在命令输入后都跟着同样的5个地址周期。由于擦除是以块(1块有64页)为单位的,所以在块擦除操作中仅需要3个行地址周期。以上的操作都是通过写特殊的命令到命令寄存器中。特殊命令集定义如表l所列。

K9F2G08UXA芯片内有1个状态寄存器,命令70h就是读这个状态寄存器的。通过它可以查询编程或擦除操作是否完成,以及查看这些操作完成的正确与否。在写70h命令到命令寄存器中后,且在/CE或/RE的下降沿时,状态寄存器的内容就可以在1个读周期内输出到I/O引脚上。读状态寄存器的定义如表2所列。

51内核单片机管理NAND FLASH的方法

2.2K9F2G08UXA各引脚功能

K9F2G08UXA的各引脚功能如下:

I/O0~I/O7:用于输入命令、地址和数据。在读操作时输出数据,当未选中芯片或输出禁止时浮空为高阻。

CLE:地址锁存使能。为高时,命令在/WE的上升沿通过I/O口锁存在命令寄存器中。

ALE:地址锁存使能。当为高时,地址在/WE的上升沿被锁存在地址寄存器中。

/CE:芯片使能。在读操作期间,/CE为高时芯片返回standby模式。但是当在编程或擦除时处于忙状态时,贝坏理睬/CE,芯片也不返回standby模式。

/RE:读使能,低电平有效。有效时把数据驱动到I/O总线上,在/RE的下降沿后tREA处数据有效,并使内部列地址计数器加1。

/WE:写使能,低电平有效。命令、地址和数据均是在/WE上升沿锁存。

/WP:写保护,低电平有效。在上电时,它提供写擦除保护,有效时,内部高电压产生器被复位。

R/B:准备好/忙输出,反映芯片的操作状态。为低时,表示正在进行编程、擦除或随机读操作,完成后返回高状态。若是开漏输出,当未选中芯片或输出禁止时不浮空为高阻态。2.3K9F2G08UXA与单片机的接口电路

由于K9F2GO8UXA的I/O引脚为8位,因此可以很方便地选取51系列8位单片机。因51系列8位单片机的工作电压为5V,图1中用VCC表示,K9F2GO8UXA闪存芯片的工作电压为3.3V,所以单片机与闪存间不能直接相连,中间必须增加电平转换芯片进行隔离,如图1中74LVC4245。将K9F2GO8UXA的8位I/O引脚通过电平转换芯片与单片机的数据总线端口D0~D8位相连。K9F2GO8UXA的读使能(/RE)、写使能(/WE)则分别通过电平转换芯片与单片机的P3.6(/RD)和P3.5(/WE)相连,其他控制信号如CLE、/CE、R/B等则通过电平转换芯片与单片机的P1口相连,并通过软件编程来完成对这些信号的控制。闪速存储芯片与单片机的连接电路如图1所示。

51内核单片机管理NAND FLASH的方法

3软件编程

3.1读操作

闪速存储器上电后就处于读存储单元状态,K9F2GO8UXA芯片默认为读模式,也可以直接写00H到命令寄存器中完成该存储单元操作。读操作有3种类型:随机读、串行页读和连续行读。当改变页地址时,使能随机读模式。被选中的页在10us内就传送到数据寄存器中,系统控制器可以通过R/B引脚监测数据传送的完成与否。一旦页中的数据被装入到寄存器中,数据就可以在60ns的周期内,在连续的/RE脉冲读出。读操作流程如图2所示。

51内核单片机管理NAND FLASH的方法

3.2页编程

编程操作以页为单位,但它允许在1个页编程周期内进行1个字节或连续的直到2112字节的多分页编程。在没有阻碍擦除操作的同一页内,连续分页编程操作的个数主阵列不能超过2个,后备阵列不能超过3个。数据装入阶段开始于数据输入命令(80h),接着是4个周期的地址输入和数据装入,非编程字节不需要装入。一旦编程操作开始,且/RE和/WE为低时,就可以读状态寄存器中的状态位(I/O6)。系统控制器也可以通过R/B引脚输出来监测编程操作周期的完成与否。在编程过程中只有读状态命令和复位命令有效。页编程操作完成后,可以查看状态位(I/O0),为“0”表明编程成功;为“1”则编程出错。页编程流程如图3所示。

3.3块擦除

任何FLASH器件的写入操作都只能在空的或已擦除的单元内进行。所以大多数情况下,当新数据写入一个扇区时,FLASH都必须进行擦除。擦除操作以块为单位,流程如下:首先启动块擦除建立命令(60h);接着装入需要3个周期完成的块地址,其中只有A18-A28地址有效,而忽略A0~A17地址;最后是擦除确认命令(D0h),至此完成内部擦除过程。在输入擦除确认命令后的/WE的上升沿,内部写控制器进行擦除操作和擦除校验。当擦除操作完成后可以校验写状态位(1/00)。

51内核单片机管理NAND FLASH的方法

3.4程序实例

下面的程序是用KeilC51编写的读操作程序。其他操作如块擦除、页编程均可参照文中介绍的流程图进行编程。但应注意根据闪速存储的时间参数来调整这些操作的时间。

#include

#include

#include

#include

#include

#include

#include

#defineFLASH_BLOCK_ERASE_1ST0x60

#defineFLASH_BLOCK_ERASE_2ND0xD0

unsignedcharbdataoutregister_2;

sbitflash_ale

sbitflash_wp

voidflash_read_commond(void);//FLASH进入读模

式(输入指令)

voidflash_read_address(void);//FLASH进入读模式

(输入地址)

voidflash_write_commond(void);//FLASH进入写模式

(输入指令)

voidflash_write_address(void);//FLASH进入写模式

(输入地址)

voidflash_data_in(void);//FLASH进入数据输入模式

voidflash_data_out(void);//FLASH进入数据输出模式voidflash_inefficacy(void);//FLASH进入写保护状态voidflash_write_data_in(unsignedchardata_in);//向FLASH中写入数据

unsignedcharflash_read_data_out(void);//从

FLASH中读出数据

voidflash_setup_address_5cycle(void);//设置5

周期地址

voidflash_setup_block_address_3cycle(void);//设置

3周期地址(块地址)

voidflash_block_erase_handle(unsignedinttemp_int);//块擦除操作

//FLASH块擦除子函数

//入口参数:unsignedinttemp_int块地址

voidflash_block_erase_handle(unsignedinttemp_int){flash_page_address=0;flash_block_address=temp_int;//要擦除块的地址flash_write_commond();〃FLASH进入

写模式(输入指令)

flash_write_data_in(FLASH_BLOCK_ERASE_1ST);//输入0x60h

flash_write_address();//FLASH进入写

模式(输入地址)

flash_setup_block_address_3cycle();//输入要

擦除块的地址

flash_write_commond();〃FLASH进入

写模式(输入指令)

lash_write_data_in(FLASH_BLOCK_

ERASE_2ND);

//输入0xD0h

while(!RBOUT);

//等待擦除完成

flash_inefficacy();

//FLASH进入写保护状态

}

4结语

本文介绍一种51内核管理NANDFLASH的方法,并给出基于该方法硬件实现和C语言源代码,该硬件电路和软件代码已经在笔者参与研制的总线式消防电话系统中得到成功应用,实现了对语音信息的长时间存储功能,工作稳定、可靠。

20211118_619633f451b34__51内核单片机管理NANDFLASH的方法

声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

不知道大家学习51是怎么过来的,反正我是一路忽悠过来的。现在用51来开发产品必须要充分用到它的内部资源,本来主频、资源就比不上32,不充分的利用怎么才能开发好的产品,那么今天我又学习到两个小技能:延时和串口

关键字: 单片机 51内核

很久以前,在AndyGrove主导Intel的时代,Intel的DRAM业务因日本DRAM(如NEC,之后成为Elpida)的大举进攻而亏损,最后被迫关闭该业务,全心转型、聚焦发展CPU。但DRAM与PC息息

关键字: Intel RAM ROM NANDFLASH

0 引言Bootloader通常称为系统引导加载程序,是系统加电或复位后执行第一段代码[ 1 ]。一般它只在系统启动时运行非常短时间,但对于嵌入式系统来说,这是一个非常重要系统

关键字: BOOTLOADER NANDFLASH 内核 CK

全球市场研究机构TrendForce旗下记忆体储存事业处DRAMeXchange最新调查显示,近期各家智慧型手机大厂备货力道明显升温,加上NANDFlash厂商加速转进新制程导致供...

关键字: Flash NAND NANDFLASH DRAM

【导读】随着DRAM和NANDFlash市场价格持续崩跌,不仅上游DRAM厂营收纷呈现大幅衰退情况,下游存储器模块厂亦受到牵累,10月营收亦持续下滑,其中,威刚10月营收较9月减少达17.1%。威刚表示,预期11月营收将...

关键字: DRAM NANDFLASH 存储器 尔必达

【导读】9月12日,全球第一大内存芯片生产厂商——韩国三星电子,在西安的存储芯片工厂宣布动工。预期可于2013年底前量产10nm级NAND型闪存(NANDFlash),成为三星有史以来投资额最高的海外芯片制造厂。...

关键字: 三星 存储芯片 芯片厂 NANDFLASH

【导读】由于市场担心旺季不旺导致NAND Flash市场交易清淡,但是智能型手机、平板计算机等新产品备货需求,仍驱动9月上旬NAND Flash合约价均价持平甚至小涨格局。预期NAND Flash合约价在近期仍将持平,第...

关键字: NANDFLASH Flash NAND 平板

2010年存储器产业热度急速升温,许多熬过景气低潮期但口袋空空的存储器大厂,纷积极募资抢钱,而最直接方式便是向下游存储器模块厂借钱,未来再以货源抵债,近期海力士(Hyn

关键字: 存储器 海力士 金士顿 NANDFLASH

为因应持续成长的智慧手机与平板电脑需求,日本大厂东芝(TOSHIBA)未来3年内将在生产半导体的四日市工厂,斥资7000亿日圆(2071亿元台币)投资最新设备,力拼在NANDFlash全球市占居首的三星电子(SAMSUN...

关键字: 东芝 三星 半导体 NANDFLASH

摘要:介绍一种基于四时钟周期、高速8051内核的混合信号8位单片机MAX7651。探讨在开发基于MAX7651的应用系统时所面临的问题,并推荐相应的解决方案。 关键词:MAX7651 AT89LV55 8XC51RA/...

关键字: 51内核 8位单片机 C51 编程器
关闭
关闭