DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 111|回复: 0
打印 上一主题 下一主题

基于单片机的FIash存储器坏块自动检测

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:26:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
随着电子技术飞速发展,智能电子产品随处可见,如PC机、移动电话、PDA、数码相机、游戏机、数字电视等,而诸如此类的电子产品的核心器件往往离不开存储器。无论是从存储器的物理结构、存储容量、数据读写速度、可靠性、耐用性,还是产品的实用性方面。其种类繁多。然而由于种种原因,越来越多的电子产品采用数据传输快、容量大的NAND型Flash存储器。虽然NAND型Flash具有许多优点,但其有随机产生不可避免的坏块,如果不能很好解决该坏块将导致高故障率。因此,这里提出一种基于DSP的Flash存储器坏块自动检测系统。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所示。
                          
                       
                          
                               

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后可以很好地检测器件的无效块的分布情况。可以成为选择性能更好的器件工具,同时还可准确获取无效块地址,为以后数据存储打好基础。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-9-25 07:17 , 耗时 0.213067 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表