摘要:X25043/45 E2PROM芯片的特点及主要功能,描述了其引脚定义、工作原理、操作指令、存储阵列读时序和写时序。介绍它与51系列微处理器的几种接口方法,并给出应用电路和相应程序。
关键词:可编程 写使能 51系列微处理器 接口方法
随着测量技术的发展和微处理器的广泛应用,系统的电路越来越复杂,系统的可靠性问题也越来越突出,因此看门狗、工作电压监控和存储器差不多在每一系统中都被采用。Xicor公司提供的X25043/45 E2PROM芯片,把看门狗定时器、工作电压监控和E2PROM三种功能组合在一个封装内,并采用三线总线工作的串行外设接口(SPI)和软件协议,降低了系统成本,提高了系统的工作可靠性,非常适合于需现场修改数据的场合,可广泛应用于仪器仪表、工业自动控制等领域。但在应用中,对存储阵列的读写、看门狗定时器的设置则需通过芯片要求的指令来完成。
1 X25043/45的主要特点和引脚定义
X25043/45的主工特点如下:
(1)可编程的看门狗定时器,通过指令可选择看门狗定时时间;(2)工作电压监测,并产生复位信号;(3)读写时钟速率可达1MHz;(4)518×8位串行E2PROM;(5)数据块锁定功能和处内偶然性的写保护功能,保护存储数据;(6)CMOS器件,低功耗;(7)擦写次数最少10万次,最少100年的数据保存期。
表1 X25043/45的引脚说明
引脚号 | 引脚名 | 说 明 |
1 | CS | 芯片选择输入端 |
2 | SO | 串行数据输出端 |
3 | WP | 写保护输入端 |
4 | Vss | 电源地端 |
5 | SI | 串行数据输入端 |
6 | SCK | 串行时钟输入端 |
7 | RES/RES | 复位信号输出端。X25043输出低电平,X25045输出高电平。 |
8 | Vcc | 正电源输入端 |
2 工作原理及操作指令
X25043/45内含一个8位指令寄存器,传送指令、数据和地址时按8位串行数据格式进行,且均以最高有效位在先的方式传送。其指令见表2。SI线上输入的数据在SCK上升沿被锁存,芯片内的数据在SCK下降沿输出至SO线上。时钟SCK允许操作过程中停止并在其后恢复。
表2 X25043/45指令集(A8为地址的最高位)
指令名 | 指令格式 |
说 明 |
WREN | 0000 0110 | 允许写操作,设置写使能锁存器。 |
WRDI | 0000 0100 | 禁止写操作,复位写使能锁存器。 |
RDSR | 0000 0101 | 读状态寄存器。 |
WRSR | 0000 0001 | 写状态寄存器。 |
READ | 0000 A8011 | 从开始于所选地址(A8)的存储器阵列中读数据。 |
WRITE | 0000 A8010 | 将数据写入开始于所选地址(A8)的存储器阵列中。 |
在读存储阵列时,将CS拉至低电平,发送SCK时钟脉冲,通过SI线发送含最高位地址A8的READ指令,然后发送8位地址,选定的存储单元中的数据被送到SO线上。每个数据被送出后,芯片内的地址计数器自动加1,指向下一存储单元;若继续提供SCK脉冲,可读出下一存储单元数据。当地址计数器达到$1FFH时,自动翻转至$000H单元,直至CS为高电平,终止读操作。SO线不输出数据时,呈高阻状态。其时序如图2所示。读状态寄存器时,片选后发送RDSR指令,状态寄存器的内容在发送RDSR指令的第8个SCK脉冲的下降沿被送出到SO线上。
在写操作之前,必须置位“写使能”。在字节、页或状态寄存器写周期完成后和上电情况下,“写使能”自动复位,WP为低电平,“写使能”可被复位。“写使能”复位时,不能对芯片进行写操作。因此必须置WP为高电平,将片选CS置低电平,向芯片发出WREN指令,接着再将片选CS置位,以置位“写使能”。若不将CS置位而继续进行写操作,则写操作无效。最少一个SCK周期后,重新将CS置低电平以进行写操作。写存储阵列时,发送含最高位地址位A8的WRITE指令后,送8位地址,再送数据写入芯片。在CS一直为低电平的情况下,可以连续送写同一页地址的4个字节数据。超过4个字节数据,芯片将自动从本南的第一个地址重新写入,因此必须在第24、32、40、48个SCK周期后,置位CS;写状态字时,发送WRSR后送更新的状态寄存器内容。
发送WREN、WRDI和RDSR指令时,不必发送地址或数据。RDSR、WRSR指令分别用于读、写X25043/45内的状态寄存器。状态寄存器的格式如下:
DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
× | × | WD1 | WD0 | BL1 | BL0 | WEL | WIP |
注:×是随意位
WD1、WD0是看门狗定时位,为非易失性位,其组合表征的时间见表3。
表3 WD1和WD0组合表征的时间
WD1 | WD0 | 看门狗定时典型值 |
0 | 0 | 1.4s |
0 | 1 | 600ms |
1 | 0 | 200ms |
1 | 1 | 看门狗功能无效 |
BL1、BL0是存储器块保护位,为非易失性位,其组合表征的保护存储器阵列范围见表4。选定保护的块,用户只能读而不能写。
表4 BL1和BL0组合表征的保护存储器范围
BL1 | BL0 | 初保护的阵列地址 |
0 | 0 | 无保护阵列 |
0 | 1 | $180H~$1FFH |
1 | 0 | $100H~$1FFH |
1 | 1 | 000H~$1FFH |
WEL是“写使能”锁存器状态位,只读位。为1,“写使能”置位;为0,“写使能”复位。
WIP是表征芯片写操作忙位,只读位。为1,写操作正在进行;为0,无写操作。
3 X25043/45与5系列微处理器接口
由于51系列微处理器无SPI接口,因此必须通过移位方式来实现通讯。X25043与51系列微处理器接口时,一般不能通过CPU的P2口进行片选,只有在P2口为位控方式工作时才允许。51系列CPU的P2口工作于地址总线方式时,其输出是脉冲形式,地址送出后,呈高电平。因此在对X25045操作时,不能保证片选持续有效,也就不能对其进行任何操作。为此片选CS只能是位控方式连接,一般与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所示的电路,在对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 ;读锁存指令
WRST_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.C
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
- CGD和Qorvo将共同革新电机控制解决方案
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 贸泽开售可精确测量CO2水平的 英飞凌PASCO2V15 XENSIV PAS CO2 5V传感器
- 玩法进阶,浩亭让您的PCB板端连接达到新高度!
- 长城汽车研发新篇章:固态电池技术引领未来
- 纳芯微提供全场景GaN驱动IC解决方案
- 解读华为固态电池新专利,2030 叫板宁德时代?
- 让纯电/插混车抓狂?中企推全球首款-40℃可放电增混电池,不怕冷
- 智驾域控知多少:中低端车型加速上车,行泊一体方案占主体
- Foresight推出六款先进立体传感器套件 彻底改变工业和汽车3D感知