基于X25165芯片在8051单片机中的应用

美国xicor公司生产的z25165芯片是集看门狗、电压监控和串行eeprom三项功能于一体的集成电路产品。该芯片的应用将有利于简化单片机系统的结构,降低系统的成本,减少对电路板的空间需求,增加系统的可靠性。
1 芯片简介
x25165的引脚排列如图1所示,各引脚功能说明如表1所列。
x25165使用简单的三线总线串行外设接口(spi),对芯片进行操作的所有操作码、字节地址及写入的数据均从si引脚输入,写入数据在串行时钟(sck)的上升沿被锁存,从芯片读取的数据从so引脚串行移出,并在串行时钟的下降沿输出数据。
芯片的看门狗定时器和vcc电压监视器都对微处理器提供独立的保护,当系统发生故障时,只要看门狗定时器达到其可编程的超时极限,reset引脚立即自动产生一个持续200ms的高电平复位信号。当电源电压vcc降到4.5v以下时,reset引脚立即自动产生主电平复位信号,并一直保护到电源电压恢复正常。在系统电源上电或掉电时,reset引脚也立即自动产生一个高电平复位信号。这样,就能有效地防止系统死机、数据误写及误操作等故障现象的发生。
x25165芯片内部有2k×8位的串行eeprom,每个字节可以擦写10万次以上,内部数据可以保存100年以上。应用时,可以通过编程对指定的块进行锁定,以防止由于误操作等原因破坏保存的数据。
2 工作原理
2.1 指令
x25165共有七条指令(见表2),对芯片的所有操作都需要通过对指令寄存器写命令来完成,所有的指令、地址、数据均以高位在前的方式(msb)串行传送。
2.2 状态寄存器
x25165内有一个八位状态寄存器,在任何时候都可以通过rdsr指令来读取状态寄存器的内容,也可以通过wren,sflb,wrsr等指令来设置状态寄存器中的某些位。状态寄存器的格式如下:
flb:只读位,指示一个易失位的状态,可用sflb和rflb指令进行置位和清零,上电时该位自动清零;
wpen:为非易失位,可用wrsr指令进行编程,该位和wp引脚配合使用能以编程方式实现对硬件的写保护(见表5)。当wp引脚为低电平且wpen位被置位时,所有状态寄存器的写操作被禁止。
3 芯片应用
3.1 硬件接口电路
在一个8051单片机系统中可按照图2的连接方式使用该芯片。
3.2 软件接口设计
根据图2的连接方式,笔者编写了七个实用的应用接口程序,供大家参考。
a.串行输出了程序
将累加器a中的数据按照高位在前的顺序(msb)串行输出至x25165芯片中。
wd-outb:mov r7,#08h;有8位数据要传输
wd-outb1:clr p1.2;使sck为低电平
rlc a ;将输出位移入c
mov p1.1,c;进位位移入si
seib p1.2;使sck位为高电平
djnz r7,wd-outb1;判断循环是否结束
clr p1.1;清si
ret
b.串行输入子程序
将1字节的数据按照高位在前的顺序(msb)从x25165中串行读入累加器a中。
wd-inb:mov r7,#08h;有8位数据要接收
wd-inb1:setb p1.2;产生sck脉冲
clr p1.2 ;
mov c, p1.0 ;s0移入进位位c
rlc a ;累加器a带进位位去移
djnz r7, wd-inb1;判断循环是否结束
ret
c.读状态寄存器子程序
用于从x25165中读状态寄存器内容,读出的内容存放在a中。
wd-rd-sr:clr p1.2 ;使sck为低电平
clr p1.3 ;芯片选择cs有效
mov a,#05h ;rdsr指令送累加器a
lcall wd-outb ;输出rdsr指令
lcall wd-inb ;读取状态寄存器内容
clr p1.2 ;使sck为低电平
setb p1.3 ;芯片选择cs无效
ret
d.写状态寄存子程序
该子程序可以设置块保护地址范围和可编程看门狗定时器超时周期。子程序中需要先使片选信号有效,然后用wren指令设置写使能锁存器,8位指令输出后必须将片选信号拉高,这样才能使命令生效。同样,数据输出完成后也必须将片选信号拉高。
wd-wr-sr:clr p1.2 ;使sck为低电平
clr p1.3 ;芯片选择cs有效
mov a, #06h ;wren指令送累加器a
lcall wd-outb ;输出wren指令
setb p1.3 ;使cs为高电平
clr p1.3 ;芯片选择cs有效
mov a,#01h ;wrsr指令送累加器a
lcall wd-outb ;输出wrsr指令,置状态寄存器
mov a,#10h;无块保护,超时周期;800ms
lcall wd-outb ;输出状态寄存器内容
clr p1.2 ;使sck为低电平
setb p1.3 ;使cs为高电平
ret ;
e.读存储单元内容子程序
从x25165的串行eeprom中读指定单元内容,需要先发送read指令和16位地址,指定地址单元的数据在sck脉冲的作用下就会从s0引脚依次移出。
wd-rd-data:clr p1.2 ;使sck为低电平
clr p1.3 ;芯片选择cs有效
moc a,#03h ;read指令送累加器a
lcall wd-outb;输出read指令
mov a,dph;高位地址送累加器a
lcall wd-outb ;输出高位地址
mov a,dpl ;低位地址送累加器a
lcall wd-outb ;输出低位地址
lcall wd-inb ;读取(dptr)单元的数据
mov r4,a ;数据送r4
lcall wd-inb ;读取(dptp+1)单元的数据
mov r5,a ;数据送r5
clr p1.2 ;使sck为低电平
setb p1.3 ;芯片选择cs无效
ret
f.写存储单元内容子程序
该子程序向芯片内eeprom的指定起始地址写入数据,与写状态寄存器子程序一样,程序中需要先输出wren指令设置写使能锁存器。然后,按高位在前的顺序输出存放于dptr中的16位地址和存放于r5、r4中的16位数据。最后,要循环检测状态寄存器的wip位,直到芯征内容的写操作完成,以确保数据被安全可靠地写入芯片。
wd-wr-data:clr p1.2 ;使sck为低电平
clr p1.3 ;芯片选择cs有效
mov a,#06h ;wren指令送累加器a
lcall wd-lutb ;输出wren指令
setb p1.3 ;使cs为高电平
clr p1.3 ;芯片选择cs有效
mov a,#02h ;write指令送累加器a
lcall wd-outb ;输出write指令
mov a,dph ;输出高8位地址
lcall wd-outb ;
mov a,dpl ;输出低8位地址
lcall wd-outb ;
mov a, r4 ;输出低8位数据
lcall wd-outb ;
mov a,r5 ;输出高8位数据
lcall wd-outb;
clr p1.2 ;使sck为低电平
setb p1.3 ;使cs为高电平
wd-wip-poll:lcall wd-rd-sr ;读状态寄存器
jb acc.0, wd-wip-poll
;检测wip位
ret
g.看门狗定时器复位子程序
只要在设定的看门狗定时器超时周期以内执行子程序并向芯片的cs引脚发送一个下降沿,看门狗就不会产生复位输出信号。
wd-eat:setb p1.3 ;
clr p1.3 ;产生cs下降沿脉冲
setb p1.3 ;
ret
笔者在设计车轮径轴向位移检测仪时使用了x25165芯片,从而简化了系统结构,降低了成本,提高了系统的可靠性,使用过程中保存的数据从未发生丢失现象,使用结果令人满意。

GaN FET在混合动力汽车/电动汽车中实现高频工作和稳健性
如何选购生活常用电池?
解决噪声问题的PCB注意事项
5G时代区块链技术的发展还面临哪些困难
乐视手机2017年的首部旗舰机就要来了!骁龙835,1300万三摄,整机无实体按键
基于X25165芯片在8051单片机中的应用
MQTT和Modbus的物联网网关协议区别分析
fpc和pcb的区别与应用
高通推出新的C-V2X芯片 目的直指自动驾驶
亚马逊将投资28亿美元,在印度修建多个数据中心
如何避免光模块接口受到污染?
广东首个用户侧商用分布式储能正式落地,一般工商业电价第5次降价
苹果暂停与现代汽车合作谈判,日本汽车厂商是否会成为苹果造车工具
比较器IC数据手册中的参数和规格
怎么认识广播电视发射机
国际首部完整讲授当代深度学习计算系统软硬件技术栈的教材
华米科技竟用类金刚石镀膜保护智能手表的3D玻璃镜面
大族封测IPO进程再进一步
冰箱电机驱动该如何设计
恩智浦SmartMX安全芯片出货量超五亿,缔造新纪录