《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于X24C45芯片的非易失性数据存储设计

基于X24C45芯片的非易失性数据存储设计

2008-11-28
作者:万 频

  摘  要: 介绍了一种设计思想独特的非易失性" title="非易失性">非易失性存储器X24C45,其特点是能满足频繁更新数据和快速存取数据的需求。强调了在硬件设计时应特别注意的问题,给出了有关该芯片操作的编程实例。

  关键词: 非易失性存储器  自动存储  单片机

 

  在智能化电子产品的设计过程中,经常会遇到一些重要数据的非易失性保存问题。早期普遍采用的是电池维持RAM供电以实现整机掉电后的数据保存。但这样做会由于电池本身的原因,如电池的使用寿命相对较短及某些恶劣环境(高湿高温等)导致电池失效,而引起数据丢失的情况出现。同时电池体积相对较大,会严重限制某些电子产品的微型化设计。

  目前非易失性的数据保存方法多采用EEPROM。但EEPROM也有其弱点,一是擦写次数有限(多为10万次),二是写入速度慢,这样就限制了其在许多需要频繁更新数据且需高速传输数据场合中的应用。

本文介绍的存储器芯片X24C45,可以较好地解决上述非易失性数据存储过程中遇到的难题。

1 X24C45的功能特点

  X24C45是Xicor公司开发的一种设计思想独特的非易失性存储器。这种器件将RAM和EEPROM制作在同一块芯片上,RAM存储阵列(16×16)的各个bit与EEPROM存储阵列的各个bit一一对应,通过软件指令或外部输入能够使数据在两个存储阵列之间相互传送。其中的RAM存储阵列正常工作时能实现数据与外部芯片的随机存取功能,这样可保证该芯片适合数据快速存取的场合;而在电源电压" title="电源电压">电源电压降至阈值电压" title="阈值电压">阈值电压时,该芯片能自动将RAM中的当前数据传输至EEPROM中,这样就保证了掉电时的数据非易失性保存。掉电情况在绝大多数系统中都不会频繁出现,故对EEPROM的擦写次数相应地不会太多。而X24C45中EEPROM的擦写次数又高达100万次,可见X24C45完全能胜任在数据频繁更新的场合实现非易失性存储的任务。

X24C45的引脚图如图1所示。

 

 

  脚1为片选端,当该脚为高时片选有效,当该脚为低时芯片处于低功耗待机状态,且X24C45中的指令寄存器被复位;脚2为串行时钟端;脚3为串行数据输入;脚4为串行数据输出;脚5为接地端;脚8为电源端;脚7为漏极开路输出,当电源电压降至低于自动存储阈值电压VASTH(VASTH在4.0V~4.3V范围)时,脚7为低,对外部电路发出一个掉电报警或掉电复位信号,可见该芯片同时具有电源监视功能。脚6输入一个低电平时,将会执行由EEPROM将数据传输到RAM的操作。

2 X24C45的指令集及工作时序

  X24C45的各种功能主要是由软件来实现的。CPU通过DI端口向X24C45中的指令寄存器传送一个指令,以实现某个功能。其指令集如表1所示。

 

 

  由表1可见,所有指令的最高位都为“1”。所以在片选信号CE为高有效时,DI口由低电平跳变出一个时钟周期的高电平,表明开始输入一个指令,其工作时序如图2所示。

 

 

  由RAM将数据存入EEPROM的操作条件限制较严格,为的是防止对EEPROM的意外写操作(因为EEPROM的擦写次数有限,不必要的写操作应避免)。所以该存储功能的实现,必须满足以下三个条件同时成立:接收到STO指令;接收到WREN指令;接收到RCL指令或脚6电平被拉低。在将EEPROM的数据送回到RAM中的同时,应使X24C45内部的“前次数据恢复”锁存器置位。另外需要说明的是,在将RAM中的数据存入EEPROM的操作过程中,X24C45的其它所有功能都被禁止。

  ENAS指令将X24C45内部的“自动存储使能” 锁存器置位,从而允许在电源电压降至低于自动存储阈值电压VASTH时,自动执行将RAM中的数据存入EEPROM的操作。

  为了少占用CPU的I/O" title="I/O">I/O端口,X24C45的DI脚和DO脚通常连接到CPU的同一个I/O口(如图1所示)。READ指令将RAM中AAAA地址的数据读出,该指令的最低位为无关位,这样正好允许在READ指令的第八个时钟周期内将I/O口由输出转换为输入。RAM的读操作时序如图3所示。

 

 

  WRITE指令将数据写入RAM的AAAA地址中,其时序如图4所示。需要说明的是,RAM中的每个地址存储16bit数据。

3 X24C45应用时需注意的问题

  X24C45实际应用时与CPU的连接如图1所示。前面已经提到为节省CPU的I/O端口,可以将DI脚和DO脚连接到CPU的同一个I/O口(PA4)。

  在此要特别强调的是,电容C和二极管D本来是没有加上去的,X24C45芯片手册中也没有这样的说明。但在实际应用中笔者发现,在没有加上电容C和二极管D的情况下,X24C45会出现掉电时备份数据出错的现象。究其原因,是因为在X24C45中将当前数据由RAM存储到EEPROM时需要一定的时间(该时间典型数值为2ms,最长可达5ms),而且启动自动存储的阈值电压在4.0V~4.3V之间,数据由RAM存储到EEPROM所需要的最低电源电压为3.5V,掉电后电源电压由阈值电压下降到3.5V所需的时间,会由于各个电路中的电源电路和负载的不同而不同。显然,掉电后电源电压由阈值电压下降到3.5V所需的时间如果少于数据由RAM存储到EEPROM所需的时间,就会出现一部分数据因不能被及时备份而丢失的问题,而这种问题的出现如果不采取相应的措施是不可能被避免的。图1中的电容C和二极管D可以保证掉电后X24C45电源端的电压由阈值电压下降到3.5V所需的时间足够长,从而杜绝掉电时备份数据出错的情况。

4 X24C45相关操作的软件实现

  X24C45与MC68HC05C4单片机的硬件连接如图1所示。下面给出与其对应的有关X24C45的前次数据恢复到RAM和自动存储功能使能设置等操作的软件编程。

SAMP: LDA      #$1C      $1C=00011100   

       STA      $04       设置PA2、PA3、PA4为输出 

       LDA      #$00 

       STA      $00       初始化PA2、PA3、PA4为0 

       LDA      #$85      $85=10000101为RCL指令 

       STA      $81       将RCL指令送至待发送地址           

       JSR      CEHI      调用置CE为高子程序

       JSR      OUTB      调用输出8bit子程序" title="子程序">子程序   

       JSR      CELO      调用置CE为低子程序

       LDA      #$82      $82=10000010为ENAS指令

       STA      $81       将ENAS指令送至待发送地址          

       JSR      CEHI      调用置CE为高子程序

       JSR      OUTB      调用输出8bit子程序

       JSR      CELO      调用置CE为低子程序

       ……

CEHI: BSET     2,$00    置CE(PA2)为高          

       RTS

OUTB: LDA      #$08      准备移出8个bit

       STA      $84       将8送至计数器

LOOP: ROL      $81       待发送内容循环左移

       BCC      IS0       C=0转移至IS0

       BSET    4,$00     送1至DI/O(PA4) 

       BRA      IS1       跳转至IS1

IS0:  BCLR    4,$00     送0至DI/O(PA4) 

IS1:  JSR      CLOCK     调用时钟信号子程序

       DEC      $84       计数器减1

       BNE      LOOP      计数器内容≠0跳转

       RTS                计数器内容=0结束

CELO: BCLR    4,$00     将DI/O(PA4)拉低

       BCLR    2,$00     置CE(PA2)为低

       RTS

CLOCK: BSET    3,$00    置SK(PA3)为高

        BCLR    3,$00    置SK(PA3)为低

        RTS

  限于篇幅,CPU对X24C45其它操作的软件编程不再赘述。按照上述硬件、软件的设计思想,已将X24C45成功地应用在电话计费器的设计中。

 

参考文献

1 涂时亮. MC68HC05单片机原理、应用及技术手册. 上海:复旦大学出版社,1991

2 http://www.xicor.com
本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。