《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > X25043/45 EEPROM及其与51系列微处理器的接口方法

X25043/45 EEPROM及其与51系列微处理器的接口方法

2009-02-25
作者:周迎春 杨学泉

  摘  要: X25043/45 E2PROM芯片的特点及主要功能,描述了其引脚定义、工作原理、操作指令、存储阵列读时序和写时序。介绍它与51系列微处理器的几种接口方法,并给出应用电路和相应程序。 

  关键词: 可编程  写使能  51系列微处理器   接口方法 

 

  随着测量技术的发展和微处理器的广泛应用,系统的电路越来越复杂,系统的可靠性问题也越来越突出,因此看门狗、工作电压监控和存储器差不多在每一系统中都被采用。Xicor 公司提供的X25043/45 E2PROM芯片,把看门狗定时器、工作电压监控和E2PROM三种功能组合在一个封装内,并采用三线总线工作的串行外设接口(SPI)和软件协议,降低了系统成本,提高了系统的工作可靠性,非常适合于需现场修改数据的场合,可广泛应用于仪器仪表、工业自动控制等领域。但在应用中,对存储阵列的读写、看门狗定时器的设置则需通过芯片要求的指令来完成。 

1 X25043/45的主要特点和引脚定义 

  X25043/45的主要特点如下: 

  ⑴可编程的看门狗定时器,通过指令可选择看门狗定时时间;⑵工作电压监测,并产生复位信号;⑶读写时钟速率可达1MHz;⑷518×8位串行E2PROM;⑸数据块锁定功能和片内偶然性的写保护功能,保护存储数据;⑹CMOS器件,低功耗;⑺擦写次数最少10万次,最少100年的数据保存期。 

  X25043/45的引脚排列如图1所示,引脚功能说明见表1。 

 

 

2 工作原理及操作指令 

  X25043/45内含一个8位指令寄存器,传送指令、数据和地址时按8位串行数据格式进行,且均以最高有效位在先的方式传送。其指令见表2。SI线上输入的数据在SCK上升沿被锁存,芯片内的数据在SCK下降沿输出至SO线上。时钟SCK允许操作过程中停止并在其后恢复。 

 

 

  在读存储阵列时,将拉至低电平,发送SCK时钟脉冲,通过SI线发送含最高位地址A8的READ指令,然后发送8位地址,选定的存储单元中的数据被送到SO线上。每个数据被送出后,芯片内的地址计数器自动加1,指向下一存储单元;若继续提供SCK脉冲,可读出下一存储单元数据。当地址计数器达到$1FFH时,自动翻转至$000H单元,直至高电平,终止读操作。SO线不输出数据时,呈高阻状态。其时序如图2所示。读状态寄存器时,片选后发送RDSR指令,状态寄存器的内容在发送RDSR指令的第8个SCK脉冲的下降沿被送出到SO线上。 

 

 

  在写操作之前,必须置位“写使能”。在字节、页或状态寄存器写周期完成后和上电情况下,“写使能”自动复位,为低电平,“写使能”可被复位。“写使能”复位时,不能对芯片进行写操作。因此必须置为高电平,将片选置低电平,向芯片发出WREN指令,接着再将片选置位,以置位“写使能”。若不将置位而继续进行写操作,则写操作无效。最少一个SCK周期后,重新将置低电平以进行写操作。写存储阵列时,发送含最高位地址位A8的WRITE指令后,送8位地址,再送数据写入芯片。在一直为低电平的情况下,可以连续送写同一页地址的4个字节数据。超过4个字节数据,芯片将自动从本页的第一个地址重新写入,因此必须在第24、32、40、48个SCK周期后,置位;写状态字时,发送WRSR后送更新的状态寄存器内容。 

  X25043/45可提供电源监控和编程看门狗定时器,给系统提供复位信号。通过编程选择定时值,如果在设置的时间内没有访问X25043/45,即为低电平,则X25043/45将产生复位信号输出。芯片通过其供电电源Vcc来实现电源监控。当Vcc低于规定值时,产生复位信号输出,对于5V工作芯片,其值为4.25~4.5V。当Vcc低于4.25~4.5V时,上电后自动产生复位信号,信号宽度最小可达100ms。 

  发送WREN、WRDI和RDSR指令时,不必发送地址或数据。RDSR、WRSR指令分别用于读、写X25043/45内的状态寄存器。状态寄存器的格式如下: 

   

  WD1、WD0是看门狗定时位,为非易失性位,其组合表征的时间见表3。 

  BL1、BL0是存储器块保护位,为非易失性位,其组合表征的保护存储器阵列范围见表4。选定保护的块,用户只能读而不能写。 

 

                   

 

  WEL是“写使能”锁存器状态位,只读位。为1,“写使能”置位;为0,“写使能”复位。 

  WIP是表征芯片写操作忙位,只读位。为1,写操作正在进行;为0,无写操作。 

3 X25043/45与51系列微处理器接口 

  由于51系列微处理器无SPI接口,因此必须通过移位方式来实现通讯。X25045与51系列微处理器接口时,一般不能通过CPU的P2口进行片选,只有在P2口为位控方式工作时才允许。51系列CPU的P2口工作于地址总线方式时,其输出是脉冲形式,地址送出后,呈高电平。因此在对X25045操作时,不能保证片选持续有效,也就不能对其进行任何操作。为此片选只能是位控方式连接,一般与CPU的P1或P3口相连接。 

  图3是一款典型接口电路。R1是复位输出的上拉电阻,上拉电阻是必需的。微处理器U1为89C52,U2为X25045,提供高电平复位信号。从图3中可以看出,X25045必须用4根线与CPU接口。 

 

 

  在系统接口复杂时,典型接口方式将浪费宝贵的CPU口资源;进行口扩展时,既增加成本,又减低了可靠性,不能体现X25045的优点。在系统设计时,设计人员往往都力求最精简最可靠的最小系统方案,而较复杂的系统几乎用满所有CPU口线。 

  图4和图5两款电路相对图3有一定改进,经济实用,均能可靠地运行。图4所示电路是一种总线接口方式。但对X25045操作时,P2口不能选择其它任何器件。若总线其它器件均以低电平选择有效时,必须先将P2口置高电平,即:MOV P2,#0FH。这款电路在对X25043/45操作时,系统的中断操作中不能有数据输入输出操作。若有数据输入输出操作,必须先关中断,否则将出现逻辑混乱,甚至烧毁CPU和X25043/45。在访问X25043/45的优先级低于中断操作的最高级时,也就是说,在访问X25045时系统还必须响应中断。如有URT串口工作时,则不能使用该款电路。 

 

 

 

  对于图5电路,虽然只减少了一根口线,但巧妙地利用X25043/45的读操作是在SCK的上升沿、写操作是在SCK的下降沿、而SO线在无输出时呈高阻状态这一特性,将SO线和SI线短接,把四线接口改为三线接口。笔者多次将图5的接口方法应用于仪器开发中,将X25043/45用于口令、校准参数等的存储,均取得满意的效果,系统结构简单,并且一直稳定工作。由于它带有电源监控、上电复位和看门狗电路,所以在实际应用中,可大大减少系统的设计,提高工作可靠性。 

  以上三款电路的编程方法基本相同。对于图5所示的电路,在对X25045操作前,先要禁止所有中断,将P2口全部置高电平,才能读写X25045。三款电路读写X25045时,程序唯一的差别是在定义赋值CS、SI、SCK、SO上。对于图5,将SI、SO的定义赋值相同。据图5接口方式编有如下范例程序,该程序提供了所有X25045的命令。 

    源程序: 

    CS         BIT     P1.0   ;P1.0作片选 

    SI         BIT     P1.2   ;P1.2作串行输入 

    SO         BIT     P1.2   ;P1.2作串行输出 

    SCK        BIT     P1.3   ;P1.3作串行时钟 

    WREN_INST  EQU     06H    ;写锁存指令 

    WRDI_INST  EQU     04H    ;读锁存指令 

    WRSR_INST  EQU     01H    ;写状态寄存器指令 

    RDSR_INST  EQU     05H    ;读状态寄存器指令 

    WRITE_INST EQU     02H    ;写存储阵列指令 

    READ_INST  EQU     03H    ;读存储阵列指令 

    BYTE_ADDR  EQU     55H    ;字节操作方式存储器地址 

    BYTE_DATA  EQU     0EAH   ;写操作数据 

    PAGE_ADDR  EQU     1F0H   ;页操作方式存储器地址 

    PAGE_DATA1 EQU     99H    ;写入页的第一个数据字节 

    PAGE_DATA2 EQU     0AAH   ;写入页的第二个数据字节 

    PAGE_DATA3 EQU     0CCH   ;写入页的第三个数据字节 

    STATUS_REG EQU     10H    ;状态寄存器 

    MAX_POLL   EQU     99H    ;写忙(WIP)查询最大循环数 

    STACK_TOP  EQU     060H   ;堆栈指针 

    初始化子程序:        

    INSTALL:   MOV     SP,#STACK_TOP 

               CLR     EA 

               CLR     A 

               SETB    CS 

               CLR     SI 

               SETB    SO 

               CLR     SCK 

               RET 

    复位看门狗子程序: 

    RES_DOG:  CLR     CS 

              SETB    CS 

              RET 

    写操作忙标志查询子程序: 

    WIP_POLL:   MOV    R1,#MAX_POLL 

    WIP_POLL1:  LCALL  RS_C 

                JNB    ACC.0,WIP_POLL2 

                DJNZ   R1,WIP_POLL1 

    WIP_POLL2:  RET 

    复位“写使能”子程序: 

    WD_C:   CLR     SCK 

            CLR     CS 

            MOV     A,#WRDI_INST 

            LCALL   OUTBYT 

            CLR     SCK 

            SETB    CS 

            RET 

    置位“写使能”子程序:    

    WE_C:   CLR     SCK 

            CLR     CS 

            MOV     A,#WREN_INST 

            LCALL   OUTBYT 

            CLR     SCK 

            SETB    CS 

            RET 

    写状态寄存器子程序: 

    WS_C:   CLR     SCK 

            CLR     CS 

            MOV     A,#WRSR_INST 

            LCALL   OUTBYT 

            MOV     A,#STATUS_REG 

            LCALL   OUTBYT 

            CLR     SCK  

            SETB    CS 

            LCALL   WIP_POLL 

            RET 

    读状态寄存器子程序:  

    RS_C:   CLR     SCK 

            CLR     CS 

            MOV     A,#RDSR_INST 

            LCALL   OUTBYT 

            LCALL   INBYT  

            CLR     SCK 

            SETB    CS  

            RET 

    单字节数据写入子程序: 

    BYTE_W: MOV     DPTR,#BYTE_ADDR 

            CLR     SCK 

            CLR     CS 

            MOV     A,#WRITE_INST 

            MOV     B,DPH 

            MOV     C,B.0 

            MOV     ACC.3,C 

            LCALL   OUTBYT 

            MOV     A,DPL 

            LCALL   OUTBYT 

            MOV     A,#BYTE_DATA 

            LCALL   OUTBYT 

            CLR     SCK  

            SETB    CS  

            LCALL   WIP_POLL 

            RET 

    单字节数据读出子程序: 

    BYTE_R: MOV     DPTR,#BYTE_ADDR 

            CLR     SCK 

            CLR     CS  

            MOV     A,#READ_INST 

            MOV     B,DPH 

            MOV     C,B.0 

            MOV     ACC.3,C 

            LCALL   OUTBYT 

            MOV     A,DPL 

            LCALL   OUTBYT 

            LCALL   INBYT 

            MOV     R6,A 

            CLR     SCK  

            SETB    CS 

            RET 

    连续3字节数据写入子程序: 

    PAGE_W: MOV     DPTR,#PAGE_ADDR 

            CLR     SCK 

            CLR     CS 

            MOV     A,#WRITE_INST 

            MOV     B,DPH 

            MOV     C,B.0 

            MOV     ACC.3,C 

            LCALL   OUTBYT 

            MOV     A,DPL 

            LCALL   OUTBYT 

            MOV     A,#PAGE_DATA1 

            LCALL   OUTBYT 

            MOV     A,#PAGE_DATA2 

            LCALL   OUTBYT 

            MOV     A,#PAGE_DATA3 

            LCALL   OUTBYT 

            CLR     SCK 

            SETB    CS 

            LCALL   WIP_POLL 

            RET 

    连续2字节读取子程序: 

    SEQU_R: MOV     DPTR,#PAGE_ADDR 

            CLR     SCK 

            CLR     CS 

            MOV     A,#READ_INST 

            MOV     B,DPH 

            MOV     C,B.0 

            MOV     ACC.3,C 

            LCALL   OUTBYT 

            MOV     A,DPL 

            LCALL   OUTBYT 

            LCALL   INBYT 

            MOV     R2,A 

            LCALL   INBYT 

            MOV     R3,A 

            LCALL   INBYT 

            MOV     R4,A 

            CLR     SCK 

            SETB    CS 

            RET 

    字节读出子程序: 

    OUTBYT: MOV     R0,#08 

    OUTBYT1:CLR     SCK 

            RLC     A 

            MOV     SI,C 

            SETB    SCK 

            DJNZ    R0,OUTBYT1 

            CLR     SI 

            RET 

    字节写入子程序: 

    INBYT:  MOV     R0,#08 

    INBYT1: SETB    SCK 

            CLR     SCK 

            MOV     C,SO 

            RLC     A 

            DJNZ    R0,INBYT1 

            RET 

参考文献 

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