基于单片机的FIash存储器坏块自动检测
扫描二维码
随时随地手机看文章
1 系统设计方案
图l为Flash存储器坏块自动检测系统结构框图。
本系统设计采用AT89C51自动检测NAND型Flash存储器的无效块,获取Flash存储器的坏块信息,为后续数据存储做准备。本系统设计包括硬件电路和配套软件设计2部分。其硬件电路主要由单片机、控制、显示和存储器4部分组成,其中单片机部分采用常规的最小系统电路;控制部分由按键和单片机的外部中断组成,按钮通过电阻与接地端相连,而复位键则与电源端相连;显示部分采用单片机的P0和P1端口控制8位七段共阳极数码管,位选通端由P2端口控制数据端由Pl控制;存储器部分与单片机相连,由于存在电平差异,所以需加电平转换器74LVX42-45,可将由单片机输出的5 V电压转到3 V,并将由Flash输出的3 V电压转到5 V,其转换方向便于控制。而软件设计部分采用单片机C语言编写程序,当数据存储到单片机后,用一个循环语句将其放到数组里,这样可以通过改变某一变量实现上下查询。则将这个变量的改变放在外部中断程序中。
2 硬件电路设计
硬件电路设计由于选用的51单片机是TTL器件,而所要检测的NAND型Flash存储器是CMOS器件,这2种类型器件的电平不相匹配,因此需增加电平转换器74154245,从而实现电压的5 V与3 V的双向转换。
2.1 单片机的连接
为了方便读图,该系统设计的电路原理图中的许多导线连接都采用网络标号的方法,而标号的命名基本采用引脚名称。单片机的P1端口的位操作控制Flash的控制端,P0端口作为单片机和Flash的地址和数据传输端口。其中数据的流向采用P1.6和P1.7控制,要读取Flash的数据时,如读ID时,先对单片机的P1端口位操作,依照时序设置控制字,接着由单片机的PO端口输出读取ID的命令,然后设置写地址的控制字,输入地址00H。读状态时,连续的RE脉冲可输出ID代码。页读取操作与此类似。图2为单片机电路连接图。
2.2 Flash存储器的连接
K9K8G08UOM是采用NAND技术的1 GB大容量、高可靠、非易失性Flash存储器,具有高密度、高性能特点。其无效块定义为包含有一个或更多无效字节,且其可靠性不能被保证,则无效块中的信息称为无效块信息。和所有的有效块一样,它具有相同的AC和DC参数,一个无效块不会影响有效块的运行,因为它有相应独立的指令资源依靠选择晶体管,该系统设计必须通过地址掩盖其无效块。第l块(地址是OOh)为了保证是有效块,不要求纠错l K编程/擦除周期。
除了先装载好的无效块信息,所有器件的存储单元都被擦除,无效块状态定义在空余区域的第1个字节。在每块第1页2 048字节的列地址中没有FFh。很多情况下,无效块信息也是能擦除的,一旦擦除,它不可能恢复其原有信息。因此,系统必须在原来无效块的信息基础上认识无效块。该系统设计就是通过读每块的第1页判定该块是否为无效块。
依据该Flash器件数据资料中各个引脚的功能,设计Flash的电路连接,图3只给出K9K8G08UOM部分所用引脚,电路中Flash的控制端经电平转换器后与单片机的Pl端口相连,而I/O端口经电平转换器与单片机的P0端口相连。
2.3 74LVX4245电平转换器
74LVX4245提供5 V和3 V之间转换的8位双向电平转换器。该器件的T/R引脚控制数据流向。发射端使数据由A端到B端,而接收端使数据由B端到A端。A端接5 V总线,而B端接3 V总线,如图4所示。[!--empirenews.page--]
2.4 数码管
采用共阳极数码管动态显示方式。为了提高驱动能力,采用三极管驱动,用P2端口的低电平对数码管进行位点亮,P0端口输入要显示的字符。本系统设计时,第l位和第2位显示第几个坏块,后3位显示无效块地址。
3 系统软件设计
采用μVision2集成开发环境,μVision2支持8051的所有Keil工具包,其中包括C编辑器、宏汇编器、链接器,定位器和目标文件至HEX格式的转换器。系统软件设计,即单片机代码设计通常可采用汇编语言或C语言。图5是无效块判断的主要流程。
本设计中软件核心部分是存储器的页读取函数。函数中定义无符号整型变量赋值2 048,依据页读取的时序,先将读指令00H由函数Writ-eCommand写入Flash的命令寄存器,接着由WriteAddress函数将4个周期的地址写入Flash的地址寄存器,再由WriteCommand函数将读命令30H写入Flash指令寄存器,延时后读状态的控制字的设置,在2 048个读信号脉冲中读取缓存数据。该函数完整源程序代码如下:
4 结论
本设计满足系统设计要求,能够实现对Flash存储器的ID号的读取,准确读取存储器无效块的数目和相应的物理地址,通过功能按钮实现对无效块地址的上下查询。将存储器换成fLash后可以很好地检测器件的无效块的分布情况。可以成为选择性能更好的器件工具,同时还可准确获取无效块地址,为以后数据存储打好基础。