当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:阐述了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的方法

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭