1 硬件电路设计
硬件电路设计由于选用的51单片机是TTL器件,而所要检测的NAND型Flash存储器是CMOS器件,这2种类型器件的电平不相匹配,因此需增加电平转换器74154245,从而实现电压的5 V与3 V的双向转换。
1.1 单片机的连接
该系统设计的电路原理图中的许多导线连接都采用网络标号的方法,而标号的命名基本采用引脚名称。单片机的P1端口的位操作控制Flash的控制端,P0端口作为单片机和Flash的地址和数据传输端口。其中数据的流向采用P1.6和P1.7控制,要读取Flash的数据时,如读ID时,先对单片机的P1端口位操作,依照时序设置控制字,接着由单片机的PO端口输出读取ID的命令,然后设置写地址的控制字,输入地址00H。读状态时,连续的RE脉冲可输出ID代码。页读取操作与此类似。
1.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端口相连。
图1 Flash电路连接
1.3 74LVX4245电平转换器
74LVX4245提供5 V和3 V之间转换的8位双向电平转换器。该器件的T/R引脚控制数据流向。发射端使数据由A端到B端,而接收端使数据由B端到A端。A端接5 V总线,而B端接3 V总线,如图2所示。
图274LVX4245电路连接
1.4 数码管
采用共阳极数码管动态显示方式。为了提高驱动能力,采用三极管驱动,用P2端口的低电平对数码管进行位点亮,P0端口输入要显示的字符。本系统设计时,第l位和第2位显示第几个坏块,后3位显示无效块地址。
2 系统软件设计
采用μVision2集成开发环境,μVision2支持8051的所有Keil工具包,其中包括C编辑器、宏汇编器、链接器,定位器和目标文件至HEX格式的转换器。系统软件设计,即单片机代码设计通常可采用汇编语言或C语言。图3是无效块判断的主要流程。
图3 判断无效块流程
本设计中软件核心部分是存储器的页读取函数。函数中定义无符号整型变量赋值2 048,依据页读取的时序,先将读指令00H由函数Writ-eCommand写入Flash的命令寄存器,接着由WriteAddress函数将4个周期的地址写入Flash的地址寄存器,再由WriteCommand函数将读命令30H写入Flash指令寄存器,延时后读状态的控制字的设置,在2 048个读信号脉冲中读取缓存数据。