看门狗芯片X
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SPI接口应用之一---看门狗芯片X25045
hadao 发表于 2006-5-8 0:08:41
一、引脚定义及通信协议
SO:串行数据输出脚,在一个读操作的过程中,数据从SO脚移位输出。
在时钟的下降沿时数据改变。
SI:串行数据输入脚,所有的操作码、字节地址和数据从SI脚写入,在时钟的上升沿时数据被锁定。
SCK:串行时钟,控制总线上数据输入和输出的时序。
/CS :芯片使能信号,当其为高电平时,芯片不被选择,SO脚为高阻态,除非一个内部的写操作正在进行,否则芯片处于待机模式;当引脚为低电平时,芯片处于活动模式,在上电后,在任何操作之前需要CS引脚的一个从高电平到低电平的跳变。
/WP:当WP引脚为低时,芯片禁止写入,但是其他的功能正常。
当WP引脚为高电平时,所有的功能都正常。
当CS为低时,WP变为低可以中断对芯片的写操作。
但是如果内部的写周期已经被初始化后,WP变为低不会对写操作造成影响。
二、硬件连接
三、程序设计
状态寄存器:
WIP:写操作标志位,为1表示内部有一个写操作正在进行,为0则表示空闲,该位为只读。
WEL:写操作允许标志位,为1表示允许写操作,为0表示禁止写,该位为只读。
BL0,BL1:内部保护区间的地址选择。
被保护的区间不能进行看门狗的定时编程。
WD0,WD1:可设定看门狗溢出的时间。
有四种可选择:1.4s,600ms,200ms,无效。
操作码:
WREN 0x06 设置写允许位
WRDI 0x04 复位写允许位
RDSR 0x05 读状态寄存器
WRSR 0x01 写状态寄存器
READ 0x03/0x0b 读操作时内部EEPROM页地址
WRITE 0x02/0x0a 写操作时内部EEPROM页地址
程序代码:
#i nclude <reg51.h>
sbit CS= P2^7;
sbit SO= P2^6;
sbit SCK= P2^5;
sbit SI= P2^4;
#define WREN 0x06 //
#define WRDI 0x04 //
#define RDSR 0x05 //
#define WRSR 0x01 //
#define READ0 0x03 //
#define READ1 0x0b //
#define WRITE0 0x02 //
#define WRITE1 0x0a //
#define uchar unsigned char
uchar ReadByte() //read a byte from device
{
bit bData;
uchar ucLoop;
uchar ucData;
for(ucLoop=0;ucLoop<8;ucLoop++)
{
SCK=1;
SCK=0;
bData=SO;
ucData<<=1;
if(bData)
{ ucData|=0x01; }
}
return ucData;
}
void WriteByte(uchar ucData)//write a byte to device
{
uchar ucLoop;
for(ucLoop=0;ucLoop<8;ucLoop++)
{
if((ucData&0x80)==0) //the MSB send first
{SI=0;}
else
{SI=1;}
SCK=0;
SCK=1;
ucData<<=1;
}
}
uchar ReadReg() //read register
{
uchar ucData;
CS=0;
WriteByte(RDSR);
ucData=ReadByte();
CS=1;
return ucData;
}
uchar WriteReg(uchar ucData) //write register
{
uchar ucTemp;
ucTemp=ReadReg();
if((ucTemp&0x01)==1) //the device is busy
return 0;
CS=0;
WriteByte(WREN);//when write the WREN, the cs must have a hig h level
CS=1;
CS=0;
WriteByte(WRSR);
WriteByte(ucData);
CS=1;
return 1;
}
void WriteEpm(uchar cData,uchar cAddress,bit bRegion)
/* 写入一个字节,cData为写入的数,cAddress为写入地址,bRegio n为页 */
{
while((ReadReg()&0x01)==1); //the device is busy
CS=0;
WriteByte(WREN); //when write the wren , the cs must have a h igh level
CS=1;
CS=0;
if(bRegion==0)
{ WriteByte(WRITE0);} //write the page addr
else
{WriteByte(WRITE1);}
WriteByte(cAddress);
WriteByte(cData);
SCK=0; //
CS=1;
}
uchar ReadEpm(uchar cAddress,bit bRegion)
/* 读入一个字节,cAddress为读入地址,bRegion为页 */
{
uchar cData;
while((ReadReg()&0x01)==1);//the device is busy
CS=0;
if(bRegion==0)
{WriteByte(READ0); }
else
{WriteByte(READ1);}
WriteByte(cAddress);
cData=ReadByte();
CS=1;
return cData;
}
main()
{
WriteReg(0x00);//set the watchdog time as 1.4s
CS=1;
CS=0; //reset the watchdog
}
基于X25045的新型看门狗电路图
作者:重庆三峡学院应用技术学院谢辉来源:不详点击数:更新时间:200
7年02月14日
看门狗(watchdog)电路是嵌入式系统需要的抗干扰措施之一。
本文用x25045芯片设计了一
种新的看门狗电路,具有体积小、占用i/o口线少和编程方便的特点,可广泛应用于仪器仪表和各种工控系统中。
前言
工控系统在运行时,通常都会遇到各种各样的现场干扰,抗干扰能力是衡量工控系统性能的一个重要指标。
看门狗(watchdog)电路是自行监测系统运行的重要保证,几乎所有的工控系统都包含看门狗电路。
在8096系列单片机和增强型8051系列单片机中,该系统已经做在芯片内部,用户只要用软件开放它就可以,使用很方便。
但目前工控系统仍在使用廉价的普通型8051系列单片机,则看门狗电路必须由用户自己建立。
看门狗电路一般有软件看门狗和硬件看门狗两种。
软件看门狗不需外接硬件电路,但系统需要出让一个定时器资源,这在许多系统中很难办到,而且若系统软件运行不正常,可能导致看门狗系统也瘫痪。
硬件看门狗是真正意义上的“程序运行监视器”,如计数型的看门狗电路通常由555多谐振荡器、计数器以及一些电阻、电容等组成,分立元件组成的系统电路较为复杂,运行不够可靠。
x25045芯片简介
x25045是美国xicor公司的生产的标准化8脚集成电路,它将eeprom、看门狗定时器、电压监控三种功能组合在单个芯片之内,大大简化了硬件设计,提高了系统的可靠性,减少了对印制电路板的空间要求,降低了成本和系统功耗,是一种理想的单片机外围芯片。
x2504 5引脚如图1所示。
图1 x25045引脚图
其引脚功能如下。
cs:片选择输入;
so:串行输出,数据由此引脚逐位输出;
si:串行输入,数据或命令由此引脚逐位写入x25045;
sck:串行时钟输入,其上升沿将数据或命令写入,下降沿将数据输出;
wp:写保护输入。
当它低电平时,写操作被禁止;
vss:地;
vcc:电源电压;
reset:复位输出。
x25045在读写操作之前,需要先向它发出指令,指令名及指令格式如表1所示。
表1 x25045指令及其含义
x25045看门狗电路设计及编程
x25045硬件连接图如图2所示。
x25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。
在看门狗定时器预置的时间内若没有总线活动,则x25045将从reset输出一个高电平信号,经过微分电路c2、r3输出一个正脉冲,使cpu复位。
图2电路中,cp u的复位信号共有3个:上电复位(c1、r2),人工复位(s、r1、r2)和watchdog复位(c2、r 3),通过或门综合后加到reset端。
c2、r3的时间常数不必太大,有数百微秒即可,因为这时cpu的振荡器已经在工作。
图2 x25045看门狗电路硬件连接图
看门狗定时器的预置时间是通过x25045的状态寄存器的相应位来设定的。
如表2所示,x2 5045状态寄存器共有6位有含义,其中wd1、wd0和看门狗电路有关,其余位和eeprom的工作设置有关。
表2 x25045状态寄存器
wd1=0,wd0=0,预置时间为1.4s。
wd1=0,wd0=1,预置时间为0.6s。
wd1=1,wd0=0,预置时间为0.2s。
wd1=1,wd0=1,禁止看门狗工作。
看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。
编程时,可在软件的合适地方加一条喂狗指令,使看门狗的定时时间永远达不到预置时间,系统就不会复位而正常工作。
当系统跑飞,用软件陷阱等别的方法无法捕捉回程序时,则看门狗定时时间很快增长到预置时间,迫使系统复位。
以下是c语言编写的看门狗程序部分。
#include "reg51.h"
sbit cs=p1^2;/*片选信号由p1.2产生*/
sbit sck=p1^3; /*时钟信号由p1.3 产生*/
sbit si=p1^0; /*si由p1.0产生*/
sbit so=p1^1; /*so由p1.1产生*/
sbit c=acc^7; /*定义位变量*/
bdata unsigned char com;
void tran() /*发送一字节数据子函数*/
{
unsigned char i;
for(i=0; i<8; i++)
{ acc=com; /*将数据放入a中*/
si=c;
sck=0; /*sck产生一个上跳变*/
sck=1;
com=com<<1; /*左移一位*/
}
return;
}
main()
{
com=0x06; /*发写读使能命令*/
cs=0;
tran();
cs=1;
com=0x01; /*发写状态字命令*/
cs=0;
tran();
com=0x00; /*定时1.4s*/
tran();
cs=1;
...;系统正常运行的程序部分
}
需要注意的是,在程序正常运行的时候,应该在适当的地方加一条喂狗指令,使系统正常运行时的定时时间达不到预置时间。
系统就不会复位。
喂狗指令如下。
main()
{
...;系统正常运行的程序部分
{
cs=0; /*产生cs脉冲*/
cs=1;
}
}
x25045的看门狗电路使用十分方便。
x25045内部还集成了512beeprom和电压运行监视系统,只需这样一块芯片,外加晶振和复位电路就可以组成单片机的应用系统,非常适合于便携式仪器和嵌入式系统的设计。
参考文献
1、李朝青. 单片机原理与控制技术. 北京航空航天大学出版社,2001
2、胡伟,季晓衡.单片机c程序时间及应用实例.人民邮电出版社,2003
3、美国xicor公司x25045资料
X25045编程器的制作
生产部张华
摘要介绍X25045的编程特性以及用单片机GMS97C2051制作的编程器。
关键词单片机 E2PROM 编程
1 引言
X25045是美国Xicor公司的产品,它将三种功能:电压监控、看门狗定时器和E2PROM组合在单个芯片之内。
因其体积小、占用I/O口少等优点已被广泛应用于工业控制、仪器仪表等领域,是一种理想的单片机外围芯片。
为了对X25045内的E2PROM编程,用GMS97C2051单片机制作了一个简易编程器,该编程器与PC的串行口相接,编程数据可通过PC机写入X25045的E2PROM。
2 X25045简介
2.1 X25045引脚
:芯片选择输入;
SO:串行输出;
SI:串行输入;
SCK:串行时钟输入;
:写保护输入;
Vss:地;
Vcc:电源电压;
RESET:复位输出。
2.2 X25045工作原理
X25045内含512×8的串行E2PROM,可以直接与微
控制器的I/O口串行相接。
X25045内有一个位指令寄存
器,该寄存器可以通过SI来访问。
数据在SCK的上升
沿由时钟同步输入,在整个工作期内,必须是低电
平且必须是高电平。
如果在看门狗定时器预置的超
时时间内没有总线的活动,那么X25045将提供复位信
号输出。
X25045内部有一个“写使能”锁存器,在执行写
操作之前该锁存器必须被置位,在写周期完成之后,该
锁存器自动复位。
X25045还有一个状态寄存器,用来提供X25045状
态信息以及设置块保护和看门狗的超时功能。
图1 X25045引脚排列
表1 X25045的指令集
2.3 X25045的读时序
(a)读E2PROM的时序
(b)读状态寄存器的时序
图2 X25045读时序
2.4 X25045的写时序
(a)写使能锁存器的时序
(b)字节写操作的时序
图3 X25045写时序
2.5 复位操作
当Vcc降至门限电压以下或看门狗定时器已达到编程的极限值,X25045的RESET引脚将输出高电平。
3 X25045编程器的组成及原理
X25045编程器主要由单片机、MAX232、PS7219和LED等组成,如图4所示(虚线框部分)。
其中单片机采用LG公司生产的GMS97C2051,该单片机指令和引脚与MCS-51系列兼容。
MAX232为RS-232接口,用于单片机与PC之间的电平转换。
PS7219为串行输入,可直接驱动8位LED的显示模块。
3.1 单片机与PC机的通讯
GMS97C2051的串行口以一定的波特率接收从PC 机传来的数据,波特率的设定由定时器T1来完成,T1工作于方式2,TL1和TH1均被赋初值230,串行口以方式1工作,允许接收,每接收到PC机来
图4 X25045编程器的组成框图
的8位数据,产生一次中断,CPU响应中断后,将接收的数据写入X25045中。
3.2 单片机对X25045的写操作
X25045中有512×8的串行E2PROM,通过X25045的、SCK、SI、SO等引脚控制对X25045的读写,X25045的读写操作过程及时序前面已作了详细介绍,这里重点讨论单片机对X25045的编程。
首先置位写使能锁存器,然后发送写操作指令,紧接着发送E2PROM的地址和需写入的数据,在输入数据之后将置高,一般经2ms的延时,则数据被写入E2PROM中,也可以通过检测状态寄存器的WIP位来判定写操作是否完成,若WIP位为高,表示写操作正在进行,需继续检测,一直到WIP位变低为止,这时对X25045的编程工
作即告完成。
3.3 编程校验
为了验证编程数据的正确性,可以读出X25045中的数据,并通过显示模块将数据显示出来,读X25045操作的过程是这样的,先发送读指令,接着发送E2PROM地址,这时就可以接收X25045传出的数据,单片机将接收到的数据送到PS7219显示模块,再通过LED显示出来。
4 软件组成
(1)编程器的主程序。
PC-51:clr ea ;关中断
mov tmod,#20h ;选用T1工作方式2
mov tl1,#230;给T1置初值
mov th1,#230
clr et1;禁止T1中断
setb tr1;启动T1
mov scon,#50h ;串行口工作于方式1,允许接收
setb ea ;开中断
setb es;允许串行口中断
wait:mov c,P1.3;等待按“read”键
Jc wait
acall read
wait1:clr ri;清接收中断标志
mov a,sbuf;接收数据送入r1
mov r1,a
acall write ;r1中的数据写入X25045
reti
(2)将接收数据写入X25045中的程序。
write:clr P3.3;X25045的SCK置低
clr P3.7;SI置低
setb P3.4;CS置高
setb P3.5;SO置高
mov a,#06h;允许写操作
mov r7,#08h;写入8位
clr P3.3
clr P3.4
acall transfe;调发送子程序
setb P3.4
acall dela1ms;延时1ms
mov a,#02h;发送写指令
mov r7,#08h
clr P3.3
clr P3.4
acall transfe
mov a,38h;发送E2PROM地址
mov r7,#08h
acall transfe
mov a,r1 ;r1中的数据写入X25045
mov r7,#08h
acall transfe
setb P3.4;发送完毕
acall dela3ms;延时3ms
ret
(3)读出X25045中数据的程序。
read:mov a,#03h;发送读指令
mov r7,#08h
clr P3.3;X25045的SCK置低
clr P3.4;CS置低
acall transfe;调发送子程序
mov 39h,#00h;发送X25045地址
mov a,39h
mov r7,#08h
acall transfe
rece3:mov r7,#08h ;读出X25045中的数据rece1:nop
mov c,P3.5
mov acc.0,c
rl a
setb P3.3;SCK置高
clr P3.3;SCK变低
nop
djnz r7,rece1
rr a
mov r2,a;将读出的数据送r2
acall binbcd;将r2转换线bcd码
acall led;调用显示子程序
mov c, P1.3;等待按“read”键
jnc rece3;继续接收数据
ret
transfe:nop
mov c,acc.7 ;a的最高位送Cy
mov P3.7,c;将Cy送X25045的SI
setb P3.3;SCK置高
rl a;a左移一位
clr P3.3;SCK变低
djnz r7,transfe;循环8次
clr P3.7;将SI变低
ret
参考文献
1 X25043/45 可编程看门狗监控E2PROM数据手册.武汉力源电子股份有限公司 1998.3。