中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 存储设计 >>电子行业新闻正文

闪速存储器芯片K9F6408系列的典型应用

时间:2005/9/1 14:33:00  作者:  来源:ic72  浏览人数:1421
 
 

 摘  要:K9F6408系列是8M×8bit的NAND型闪速存储器。它以其快速读写循环,数据硬件保护,可擦除,I/O口命令/地址/数据线复用和接口便利等特点,正成为大型数据如语音、数字图像、文件等系统数据的载体。本文给出K9F640800A与单片机P87C52的硬件连接电路及闪速存储器操作的软件应用程序。

关键词:flash 存储器;扇区;操作;应用程序

1、概述

      存储器是计算机外围产品的重要组成部分,在经历了ROM, PROM和 EPROM和 如今已到了闪速存储器(Flash Memory)的时代。Flash存储器以其低成本,高可靠性的读写,非易失性,可擦写性和操作简便而成为一系列程序代码(应用软件)和数据(用户文件)存储的理想媒体,从而受到到嵌入式系统开发者的欢迎。

    Flash存储器的应用范围极广,从现代计算机优盘到嵌入式系统中取代 的地位,可谓占尽风流。正因为Flash的应用广泛,了解和掌握Flash的相关操作和管理技术就极为重要。大致说来Flash操作包括:检错(对Flash内部坏扇区的检测)、写操作(写入数据)、读操作(从Flash中读出数据)、空间管理和擦除操作。在系统中我们选用AT87C52单片机,它有24个I/O口,其中8个作为有特殊功能的I/O口,因此只剩16个I/O口可供一般的输入/输出使用。我们选用K9F640800A闪存的主要原因是它能节约I/O口,即它的地址线和数据线可复用。而其他许多闪存的地址线和数据线是分开使用的。因此,本文以SAMSUNG公司的K9F640800A为例,介绍Flash的操作技术。

2、K9F640800A芯片的性能特点:
    ·供电电压:2.7v~3.6v
    ·该芯片容量为66Mbits,由1024块组成,每块又由16页组成,一页共有(512+16)×8bit。使用64Mbits,另外还有2Mbits的闲置储存空间。
    ·写和读以页为单位,而擦除以块为单位。读、写和擦除操作均通过命令完成,非常方便。(参见图3)
    ·此芯片可擦写1百万次,掉电数据不丢失,数据可保存十年。
    ·有8位串行口,且可复用,既可作为地址和数据的输入/输出引脚,又可作命令的输入引脚,根据时序采用分时循环。(见时序图5)
    ·写入每页的时间为200us,平均每写一个字节约400ns,即约20Mb/s。
    ·该flash的每一个扇区又分为三个区(256字节,256字节和16字节),如果需要对这三个区独立操作,则通过00h,01h和50h命令分别选中。(参见图3)
    ·快速的读写循环和数据硬件保护。
                         

    引脚分布、功能及操作命令如图1所示:

    3、P87C52与K9F6408U0A的应用电路

    我们设计了一个系统,所需实现的功能是,由P87C52单片机将接收到的GPS芯片发送的数据,按一定的格式处理后,存储到Flash芯片上。当上位机发出读命令时,P87C52再从flash中取出数据,发给上位机。在此,我们给出了K9F6408U0A的flash芯片与P87C52单片机连接图(图2)。

    4、K9F6408U0A的软件编程

    K9F6408U0A的软件编程是采用C语言中嵌入汇编来完成。主要包括:flash扇区检错,读,写,擦除和管理flash空间。

    1)检错:刚出厂的Flash中可能存在坏扇区,用久的Flash好扇区也可能变坏。为了保证读写数据的可靠性,必须对Flash扇区进行检测。Flash扇区的好坏标志存在于第3区中的第6 Column, 若扇区已坏,则标志位数据不是FFH。设置一错误扇区的表,扫描检错flash,将坏扇区的号依次填入表中,将此表保存于flash存储器中的第一个块中(因为SAMSUNG确保第一个块能正确使用)。流程图(图四):

    2)读flash:Flash 分三个区,命令0X00,0X01和0X50可分别读取第一,二,三区中的数据。

    过程为:选中Flash,通过I/O口写入读命令字,写入所读数据地址,置读信号有效(下跳沿有效)。
  (读写)时序图如下:

具体程序如下:

 void FlashRead()   
{
unsigned char d;
Flash_CE=0;                 //片选               
WriteCommand(0x00);      //写读的命令         
WriteAddress(0x00,0);     //写读的地址       
for(d=0;d!=2;d++)          //一次读两页
{              
uint k=528;        //每个扇区有528个字节     
while(!Flash_RB)//当读信号无效时,等待     
{                                           
}                                           
while(k)  //写k不为0时,就继读;否则就停止读                                    
{                                            
Flash_RD=0;      //准备好读入                 
#pragma asm    //嵌入汇编,插入2个机器周期                              
NOP                                         
NOP 
#pragma endasm//结束汇编

 ACC=P0;     //把P0口读出的值存入ACC寄存器
   #pragma asm//嵌入汇编,插入2个机器周期
   NOP 
   NOP
   #pragma endasm//结束汇编
Flash_RD=1;    //不再读入   
SendData();     //串口发送数据
k--;
}
  }
Flash_CE=1;     //不再片选
}

    3)写flash:和读操作不一样的是,写操作有两个命令字:0X80和0X10,写入0X80后,表示将向寄存器中写入数据,如果再键入0X10则Flash中的控制器将寄存器的数据存储到数据存储器中。写操作时,将欲写入数据的地址与错误扇区表相对照,看是否在表中。如果在表中,则将页指针地址加十六(即换到下一个Block中),再对照,循环操作直到找到不在表中的地址。以此保证所写的地址都是有效地址。具体过程:选中Flash,通过I/O口写入写命令字,写入所要编程数据地址,置写信号有效。(写时序见图五

*unsignedchar AssertBlock(unsigned char a)// 与记录坏块的表相对照的子程序
{
 unsigned char i=0;
while (i!=invalidblockbound+1)// invalidblockbound是无效块的总数
{
  while(a!=*InvalidBlockAddress++)//当未遍历到最后一个无效块时,就继续核对

{
     i++;
      }
}
 if(i!=invalidblockbound+2)
 return 1;//无效的块
 else
return 0;//有效的块
}

void Write(void)//写操作   
{
unsigned char h;
if(first)//当开始对一页进行写操作时,first=1,否则为0
{
Flash_CE=0;    //片选
WriteCommand(0x80);   //写命令0x80
*uchar AssertBlock(startpage/16) //与记录坏块的表相对照
WriteAddress(0x00,startpage);  //写地址
first=0;
}
for(h=0;h!=16;h++)
WriteData(output[h]);   //写入寄存器处理好的GPS数据   
if(FlagWrite)//当寄存器中数据满528字节(1页)时,FlagWrite=1,否则为0
{
WriteCommand(0x10);//将数据写入flash
while(!Flash_RB)  //等待读信号有效
{
}
  WriteCommand(0x70); //读状态量
 Delay10us();
 Flash_RD=0; //准备好读入
  #pragma asm//嵌入汇编,插入两个机器周期
 nop
 nop
 #pragma endasm//结束汇编
 ACC=P0;
 ACC=ACC&0x01;
    Flash_RD=1;
   if(ACC!=0)   //若最后一位不为零
{
      *(InvalidBlockAddress+j)=startpage/16; //存储无效块空间的首地址
      startpage=startpage+16; 读一个块的第一个扇区看是否是有效的扇区
}
Flash_CE=1; //结束片选
startpage++; //写下一页
first=1;
}
}


4)擦除:以块为单位进行擦除。前后有两条擦除命令以保证不会被意外擦除。

 void FlashErase(uint a)
{
  unsigned int blockcount;
   Flash_CE=0;//片选
  for(blockcount=0;blockcount!=a;blockcount++)//寻找被擦除的块
{
   WriteCommand(0x60);//块擦除预命令
   WriteAddresspage(16*blockcount);
   WriteCommand(0xD0);//块擦除确认命令
   while(Flash_RB!=1)
   {
   }
   WriteCommand(0x70);//读擦除状态命令
 Delay10us();
 Flash_RD=0;
      #pragma asm//嵌入汇编,插入3个机器周期
 nop
 nop
 nop
 #pragma endasm//结束汇编
 ACC=P0;
  #pragma asm//嵌入汇编,插入1个机器周期
  nop
  #pragma endasm//结束汇编
  Flash_RD=1;
  ACC=ACC&0x01;
 if(ACC!=0)//擦除失败
  {
    *InvalidBlockAddress=blockcount;//记录坏的块
      InvalidBlockAddress++;
      j++;
}
    }
 Flash_CE=1;//不再片选
 }


5)flash管理:主要包括记录无效的块,flash空间检测以及空间的整理。(在此以flash整理流程图为例)
(1)开始flash整理程序;
(2)扫描整个物理空间,取得已使用的扇区数N;
(3)从第i个已使用的扇区读起,初始化i=1;
(4)看扇区的地址是否连续;
(5)如果连续就读下一个扇区,如果读到最后一个已使用的扇区就结束;
(6)如果不是最后一个已使用的扇区,就跳到步骤(3);
(7)如果物理扇区不连续,则取得此扇区所在块k的地址指针;
(8)扫描到空闲块j并取得其地址指针;
(9)将k中所有的已写扇区移至j中,擦除块k;
(10)擦除有效吗
(11)若无效则将此块记为无效块,并进行(12)步;
(12)若有效则判断读到最后一个扇区了吗?
(13)若没有跳至步骤(3);
(14)若是最后一个已写扇区,则结束整理程序。

 

 
【相关文章】
·Sony推出了为SMB用户定制的AIT Turbo解决方案
·闪速存储器芯片K9F6408系列的典型应用
· 英飞凌推出容量高达2GB的小型DIMM
·美光面向移动市场推出高密度NAND闪存
·IBM全面发布X3家族 更低成本提供更高性能和存储
·英飞凌推出首款DDR2 FB-DIMM速率高达4.8Gbps
·ST 8Mb串行闪存存储器新增网络管理功能
·Sipex的2A存储器终止器适用于高速传输线
·Broadcom推出首款基于PCI Express的SAS/SATA RoC
·北京邦诺推出中国自主开发的IP千兆网络存储产品
·Micron推出业界首款4GB FBDIMM
·蛰伏40年!继垂直磁记录之后盛开的全息记录技术
·富士通公司推出全球容量最大的2.5英寸硬盘160GB
·INTRANSA 创新的按需扩容IP磁盘库获得美国专利
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9