⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 中电网新设计新应用:闪速存储器at29c040与单片机的接口设计.htm

📁 很全的flash芯片驱动程序包括:SST28SF040
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                <TD align=middle bgColor=#ffc85f colSpan=5 height=18><A 
                  href="http://www.chinaecnet.com/gec_online/tyvek_0301.asp" 
                  target=_blank>干燥剂的优质包装材料 </A></TD></TR>
              <TR>
                <TD align=middle bgColor=#ffc85f colSpan=5 height=64><A 
                  href="http://www.chinaecnet.com/ads/hfkj.asp" 
                  target=_blank><IMG height=60 
                  src="中电网新设计新应用:闪速存储器AT29C040与单片机的接口设计.files/hfkj.gif" 
                  width=167 border=0></A></TD></TR>
              <TR>
                <TD align=middle bgColor=#ffc85f colSpan=5 height=18><A 
                  href="http://www.chinaecnet.com/ads/hfkj.asp" 
                  target=_blank>提供世界知名品牌的IC </A></TD></TR>
              <TR>
                <TD align=middle bgColor=#ffc85f colSpan=5 height=64><A 
                  href="http://www.chinaecnet.com/ads/zldz.asp" 
                  target=_blank><IMG height=60 
                  src="中电网新设计新应用:闪速存储器AT29C040与单片机的接口设计.files/zllogo.gif" 
                  width=160 border=0></A></TD></TR>
              <TR>
                <TD align=middle bgColor=#ffc85f colSpan=5 height=18><A 
                  href="http://www.chinaecnet.com/ads/zldz.asp" 
                  target=_blank>专业经营系列优质名牌继电器</A> </TD></TR><!--
  <tr> 
    <td colspan="5" bgcolor="ffc85f" height="64" align="center"><a href="http://www.chinaecnet.com/ads/dzqc.asp" target="_blank"><img src="http://www.chinaecnet.com/ads/image/dzqc.gif" width="167" height="60" border="0"></a></td>
  </tr>
  <tr> 
    <td colspan="5" bgcolor="ffc85f" height="18" align="center"><a href="http://www.chinaecnet.com/ads/dzqc.asp" target="_blank">话机电路解决方案 
      </a> </td>
  </tr>-->
              <TR>
                <TD align=middle bgColor=#ffc85f colSpan=5 height=80><A 
                  href="http://www.secomtel.com/" target=_blank><IMG height=70 
                  src="中电网新设计新应用:闪速存储器AT29C040与单片机的接口设计.files/shiq.gif" 
                  width=167 border=0></A></TD></TR>
              <TR>
                <TD align=middle bgColor=#ffc85f colSpan=5 height=70><A 
                  href="http://www.chinaecnet.com/ads/shxw.asp" 
                  target=_blank><IMG height=60 
                  src="中电网新设计新应用:闪速存储器AT29C040与单片机的接口设计.files/shxw_167.gif" 
                  width=167 border=0></A></TD></TR>
              <TR>
                <TD align=middle bgColor=#ffc85f colSpan=5><A 
                  href="http://www.chinaecnet.com/ads/shxw.asp" 
                  target=_blank>CPU、SRAM、铂金电阻、电感</A></TD></TR>
              <TR>
                <TD align=right bgColor=#ffc85f colSpan=5 height=24><A 
                  href="http://www.chinaecnet.com/ads/adsindex.asp" 
                  target=_blank>更多厂商</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
    <TD vAlign=top align=middle width=566>
      <TABLE cellSpacing=0 cellPadding=0 width=500 border=0>
        <TBODY>
        <TR>
          <TD height=40>
            <DIV align=center><B>闪速存储器AT29C040与单片机的接口设计</B></DIV></TD></TR>
        <TR>
          <TD height=25>
            <DIV align=center>张晶,曾宪云 </DIV></TD></TR>
        <TR>
          <TD height=25>
            <DIV align=center>(广东工业大学自动化学院,广东 广州510090)</DIV></TD></TR>
        <TR>
          <TD>摘要:介绍了Atmel公司的新一代大容量快闪存储器AT29C040的使用方法,并以笔者开发的某测试仪器为例,给出了实际应用的硬件电路及软件设计。 

            <P>关键词:快闪存储器;数据轮询;数据保护;单片机接口 </P>
            <P>中图分类号:TP334.7 文献标识码:A 文章编号:1003-353X(2003)05-0075-04 
        <BR></P></TD></TR>
        <TR>
          <TD><B>1 引言 </B>
            <P>自1984年第一块闪速存储器问世以来,闪速存储器就以其EPROM的可编程能力和EEPROM的电可擦除性能,以及在线电可改写特性而得到了广泛的应用和发展。随着制造工艺和材料的改进,闪速存储器比EPROM和EEPROM、SRAM及DRAM等存储器的优势越来越明显。 
            </P>
            <P>Atmel公司于1998年推出了新一代大容量快闪存储器AT29C040,由于它采用了Fowler-Nordheim隧道效应技术,使编程电流比第一代闪存降低了一个数量级。该芯片只需要+5V电源并支持分页编程,此外,还具有硬件数据保护、软件数据保护、数据查询和自举模块等其他功能。根据笔者的使用情况,本文对AT29C040闪速存储器的结构特点、使用方法等作了简要介绍,并以笔者开发的某测试仪器为例说明AT29C040与单片机的接口及使用方法。 
            </P>
            <P><B>2 芯片简介</B> </P>
            <P><B>2.1 芯片的结构与特点</B> 
            </P>AT29C040的结构类似于SRAM,它有8条数据线(D0~D7)、19条地址线(A0~A18)、3条控制线(/OE、/CE、/WE)以及电源、地线共32个引脚,具体引脚分布如图所示。<BR><BR>AT29C040闪速存储器有如下几个特点: 

            <P>(1)用5V单一电源供电,读、写操作使用同一电源,省去了一个12V的编程电源VPP ; </P>
            <P>(2)编程前不需要附加的擦除操作,在编程期间,擦除操作会在芯片内部自动进行;<BR></P>(3)在单个编程周期内,每次写一个扇区的数据,大大缩短了编程时间。AT29C040的扇区编程时间为10ms,而其他扇区的编程时间为数百 
            ms; 
            <P>(4)扇区容量小,减少了写数据时对系统内存资源的要求; </P>
            <P>(5)软件数据保护SDP(Software Data 
            Protect)功能。为了避免人为疏忽或者系统上电、掉电等因素引起对闪速存储器的误写操作, 
            AT29C040设置了软件数据保护功能。其原理是对闪速存储器写操作前,必须按一定顺序送入三个字节的命令码,然后才能写入数据,否则数据不能被写入。 
            </P>
            <P><B>2.2 芯片操作 </B><BR><BR><B>2.2.1 读写操作</B> </P>
            <P>对AT29C040的读操作非常简单,类似于SRAM,不再赘述。这里主要讨论一下对它进行写操作的方法。首先在系统RAM区为AT29C040产生一个扇区的数据映像,即先将待写入的数据放入 
            RAM中,接着送三字节的命令码到AT29C040中;然后将事先放在RAM中的数据传送到AT29C040指定的扇区中;最后还要等待闪速存储器的写周期时间(10ms),以便将数据写入存储器中。其“写” 
            操作时序如图所示。<BR></P><B>2.2.2 数据轮询</B> 
            <P>在编程周期期间,如果读取最后装入的字节将使I/O7上出现所装入数据的补码,一旦编程周期结束,所有输出线上的真数据有效,可以开始下一个编程周期。数据轮询可以在编程周期的任何时刻开始,数据轮询时序如图3所示。图中,各时间参数的含义分别是:tDH是数据保持时间; 
            tOEH是OE信号保持时间;tWR 是写信号恢复时间。 <BR></P><B>2.3 软件数据保护 
            </B><BR><BR>软件数据保护是通过一连串地向2个特殊地址写入3个特殊数据来完成的。关闭软件数据保护也是通过一连串地向2个特殊地址写入6个特殊数据来完成。如果不执行这样的操作,对29C040的访问将不能正常进行。该软件保护算法可由用户开启或关闭。图4和图5分别是是软件保护和关闭软件保护的流程图。 

            <P>有关29C040芯片其他特性以及一些相关参数在其芯片手册里有很详细的说明,这里不再描述,下面就其应用作一介绍。 </P>
            <P><B>3 与单片机的接口 </B></P>
            <P><B>3.1 硬件设计</B> 
            <BR><BR>AT29C040和微处理器接口很简便,和我们经常扩展的数据存储器基本相似。稍微有所不同的是,由于它相当于8个普通的64k字节空间的 
            RAM,所以地址最高3位分别由3根处理器地址线来控制,访问的范围是0 0000~7 FFFF。接口如图。 
            <BR></P>在硬件设计中,笔者使用的微处理器是80C51。由于扩展的芯片较多,在各器件的片选时,没有使用138译码器,而是采用了一个可编程逻辑器件(PLD)。在图6中,选中29C040时, 
            P13,P14的状态是00,选中ROM和RAM则分别是01和10(为简单起见,假设扩展芯片仅是以上几个)。 
            <P><B>3.2 软件设计 
            </B><BR><BR>在掌握了该芯片的主要特性之后,对它的使用就比较简单了。下面我们提供了16进制数0X45写到29C040里的C语言程序。 
            </P>
            <P>#include </P>
            <P>#include <BR><BR>void delay(unsigned int l_time); </P>
            <P>void protect(); </P>
            <P>void select_segment(unsigned char seg); </P>
            <P>unsigned char data cdat; </P>
            <P>void write_data(unsigned int m_addr,unsigned int 
            s_sector,unsigned int acount); </P>
            <P>{ </P>
            <P>unsigned int data addraa,addrbb; /* addraa 为内存地址,addrbb 为29C020地址 
            */ </P>
            <P>unsigned int data i,j; </P>
            <P>bit data flaga; </P>
            <P>flaga=EA; </P>
            <P>EA=0; </P>
            <P>addraa=m_addr; </P>
            <P>addrbb=s_sector*256; </P>
            <P>for(j=acount;j&gt;0;j--) </P>
            <P>{ </P>
            <P>protect(); </P>
            <P>for(i=0;i&lt;256;i++) </P>
            <P>{ </P>
            <P>P14=0;P13=1; </P>
            <P>cdat=XBYTE[addraa]; </P>
            <P>select_segment(s_sector/256); </P>
            <P>/*s_sector 是256的整数倍*/ </P>
            <P>XBYTE[addrbb]=cdat; </P>
            <P>P14=0;P13=1; </P>
            <P>addraa++; </P>
            <P>addrbb++; </P>
            <P><BR>} </P>
            <P>s_sector++; </P>
            <P>delay(1000); </P>
            <P>} </P>
            <P><BR>P14=0;P13=1; </P>
            <P>EA=flaga; </P>
            <P>} </P>
            <P>/* 选择 29C040 段地址(高位地址), </P>
            <P>seg 为段地址*/ </P>
            <P>void select_segment(unsigned char seg) </P>
            <P>{ <BR></P>switch(seg) 
            <P>{ </P>
            <P>case 0: P1=0x00;_nop_(); break; /* 29c040 a18a17a16= 000 
            00000-0ffff */ </P>
            <P>case 1: P1=0x01;_nop_(); break; /* 29c040 a18a17a16= 001 
            10000-1ffff */ </P>
            <P>case 2: P1=0x02;_nop_(); break; /* 29c040 a18a17a16= 010 
            20000-2ffff */ </P>
            <P>case 3: P1=0x03;_nop_(); break; /* 29c040 a18a17a16= 011 
            30000-3ffff */ </P>
            <P>case 4: P1=0x04;_nop_(); break; /* 29c040 a18a17a16= 100 
            40000-4ffff */ </P>
            <P>case 5: P1=0x05;_nop_(); break; /* 29c040 a18a17a16= 101 
            50000-5ffff */ </P>
            <P>case 6: P1=0x06;_nop_(); break; /* 29c040 a18a17a16= 110 
            60000-6ffff */ </P>
            <P>case 7: P1=0x07;_nop_(); break; /* 29c040 a18a17a16= 111 
            70000-7ffff */ </P>
            <P>} </P>
            <P>} </P>
            <P>void protect() </P>
            <P>{ </P>
            <P>select_segment(0);/*必须写到第0段*/ </P>
            <P>XBYTE[0x5555]=0xaa; </P>
            <P>XBYTE[0x2aaa]=0x55; </P>
            <P>XBYTE[0x5555]=0xa0; </P>
            <P>P14=0;P13=1; </P>
            <P>} </P>
            <P>void delay(unsigned int l_time)/*写完一个扇区后延时*/ </P>
            <P>{ </P>
            <P>unsigned int data lp;/* 4ms */ </P>
            <P>for(lp=0;lp <BR></P>_nop_(); 
            <P>} </P>
            <P>main() </P>
            <P>{ </P>
            <P>unsigned int data i; </P>
            <P>P14=0;P13=1; </P>
            <P>for(i=0;i&lt;256;i++) </P>
            <P>{XBYTE[0x0200+i]=0x45;} </P>
            <P>write_data(0x0200,0,1); </P>
            <P>delay(1000); </P>
            <P>while(1); </P>
            <P>} </P>
            <P><B>4 结束语 </B></P>
            <P>AT29C040在单片机中的应用不仅能使用户快速地实现所需功能,而且电擦除的方式为程序和数据的存储和更新提供了方便,随着闪速存储器器件朝着容量越来越大、工作电压越来越低、支持共同的接口标准的方向发展,闪速存储器硬件接口和软件设计将越来越容易。 
            </P>
            <P><BR>参考文献: </P>
            <P>[1] 孙涵芳,徐爱卿.MCS51/96系列单片机原理及应用[M].北京:北京航空航天大学出版社,1988. </P>
            <P>[2] 余永权.ATMEL FLASH 单片机原理及应用[M].北京:电子工业出版社,1997. </P>
            <P>[3] 窦振中. 单片机外围器件实用手册——存储器分册[M]. 北京:北京航空航天大学出版社,1998. </P>
            <P>[4] AT29C040数据手册.www.atmel.com. <BR></P></TD></TR>
        <TR>
          <TD>
            <DIV 
align=center>本文摘自《半导体技术》</DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
  <TBODY>
  <TR>
    <TD>&nbsp; </TD></TR>
  <TR>
    <TD>
      <DIV align=center><A href="http://www.chinaecnet.com/about/gywm.asp">关于我们 
      </A>|<A href="http://www.chinaecnet.com/about/wzdh.asp"> 网站导航</A> | <A 
      href="http://www.chinaecnet.com/about/ggzs.asp">广告招商 </A>| <A 
      href="http://www.chinaecnet.com/about/lxff.asp">联系方法</A> | <A 
      href="http://www.chinaecnet.com/about/zpxx.asp">招聘信息</A> | <A 
      href="http://www.chinaecnet.com/about/zjlt.asp">专家约稿</A><BR><BR><BR><FONT 
      class=eng>Copyright &copy; 2000-2004 ChinaECNet All Rights 
    Reserved</FONT></DIV></TD></TR>
  <TR>
    <TD class=eng height=40>
      <DIV align=center><B>Tel: 010-82888222, 0755-83243191</B><BR><B>Fax: 
      010-82888220, 0755-83243291</B></DIV></TD></TR></TBODY></TABLE></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -