摘 要:介绍多功能器件X25045的主要特点和原理,结合其在CAN总线节点中的作用,设计并实现其硬件接口电路及软件。
关键词:X25045;看门狗;节点
0 引 言
随着计算机技术、单片机技术、控制网络技术的发展,以智能芯片为核心的单片机系统集成化和小型化程度的日益提高,使系统具备了完全的自诊断、自检测等性能。目前,在一些测控系统中,存在电源开断、瞬时电压不稳等不安全因素,将会造成系统死机、信息丢失、运行不稳定等故障。为解决这些问题,实现系统安全可靠、稳定、实时运行,可以采用可编程看门狗、电压监控、E2PROM等功能的X25045芯片。本文针对该芯片的特征进行分析和设计,并成功地应用在基于CAN总线的控制系统中。
1 X25045简介
1.1 性能简介
X25045是将可编程看门狗、电压监控、E2PROM集于一体的多功能芯片,该芯片是美国xicor公司的新型产品,具有体积小、占用I/O少等优点,应用于系统中可以简化单片机系统的设计,并完善其性能。
| 芯片共有8个引脚, 引脚功能见表1.
芯片工作期间, <!--[if !vml]--> <!--[endif]-->端应始终保持低电平。在一个读时序周期内,数据在串行时钟SCK的下降沿,由SO端串行输出,而缓冲地址或数据在串行时钟SCK的上升沿,由SI端输入锁存。当 端为低电平时,写保护功能部分可以使用。当 端为高电平时,所有写保护功
能才正常。值得注意的是,在芯片选通时, 端变为低电平,将要中断对X25045的写操作,若正处在内部写周期内,则对写操作没有影响。
特别提出的是,看门狗定时器对单片机提供了独立的保护系统,当系统出现故障时,只要其计时达到其编程的超时极限,或者当电 |
|
表1 X25045引脚功能 |
| |
引脚 |
引脚名称 |
功能说明 |
| |
1 |
|
芯片选择输入 |
| |
2 |
SO |
串行输出 |
| |
3 |
|
写保护输入 |
| |
4 |
Vss |
地 |
| |
5 |
SI |
串行输入 |
| |
6 |
SCK |
串行时钟输入 |
| |
7 |
RESET |
复位输出 |
| |
8 |
Vcc |
电源电压 |
源电压降到最低转换点以下时,RESET引脚就会立即输出高电平复位信号。该芯片在系统上电或掉电时,RESET引脚也会立即输出高电平复位信号,从而避免了因系统故障、电源开断、瞬时电压不稳等的影响。
另外,芯片采用CMOS工艺的512字节串行E2PROM,它的每个字节可擦写10万次以上,内部数据可保存100年以上,具有低功耗、长寿命、可编程锁定等功能。使用3线总线串行外设接口SPI,就可对芯片进行读写操作。利用编程器与计算机相连,来实现对E2PROM进行读写。
1.2 工作原理
X25045 内部有一个8位指令寄存器,该寄存器可以通过引脚SI来访问,数据在串行时钟输入的上升沿由时钟同步输入。另外,对芯片的所有操作都需要通过对该寄存器的写命令来完成。其中操作主要有设置写使能锁存器允许写,复位写使能锁存器禁止写,读写状态寄存器,从所选地址开始的存贮器中读出数据,把数据写入所选地址开始的存贮器中。在执行写操作之前写使能锁存器必须被置位,在写操作完成后该寄存器必须被复位。其指令格式不再详细介绍。
X25045有一个状态寄存器,可以用来提供X25045的状态信息以及设置块保护和看门狗的超时功能。
状态寄存器的格式:
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
— |
— |
WD1 |
WD0 |
BL1 |
BL0 |
WEL |
WIP |
WIP位表示X25045是否在向E2PROM写数据。该位是1 时,表示正在进行写操作,此时不能向其写数据,反之,则是没有写操作进行,可以向其写数据。WEL位是写使能锁存器的状态位。可以由指令进行复位和置位操作。写使能锁存器被复位时向其写操作被禁止。
由WREN指令可以对状态寄存器中的BL0,BL1,WD0,WD1进行设置。BL0和BL1位确定E2PROM的块保护地址范围。WD0和WD1位是看门狗超时功能的设定位,可以设置不同的周期(典型值1.4 s、600 ms、200 ms).当WD0和WD1同时为1时,功能被禁止。
2 X25045与P87C592组成的硬件电路和软件设计
2.1 CAN总线智能节点
CAN 总线是一种具有可扩展串行通信协议的总线,有效的支持分式实时,具有高可靠性,CAN总线允许带有不同种微处理器和微控制器的网络。CAN总线链路主设备节点是单片机系统的集合,要求具有可编程性,数据处理功能,还要具有自诊断、自校正、自学习等功能,特别是要在系统组态后,节点能够独立实现多种控制功能,实现控制功能的下放,这样,就必须保证节点功能模块化、集成化,而且系统安全,可靠性高,稳定性好,抗干扰能力强,造价低廉等。
在传统的单片机系统设计中,大多采用电容和电阻组合的方式实现复位电路。但在实际的应用系统中,外部扩展电路也需要复位,这样将影响复位电路中的电阻和电容的参数,不能可靠地进行系统复位,会造成系统死机、信息丢失等。其次,在一般的系统中,不能提供串行E2PROM的写保护和电源电压监控等功能。另外,这样的系统结构庞大,费用高。这些不能满足总线节点设计的总体要求。
| 为此,从总线节点的要求及传统设计存在的问题两方面综合考虑,在设计该节点时,采用了以PHILIP公司的P87C592高性能微控制芯片为核心及以X25045芯片为辅助的电路,如图1所示。图中,P87C952是带片CAN的微控制器,是适用于自动和通用工业应用的8位高性能的微控制器,是以80C51标准性能为核心的,具有五组8位I/O口,16 kB在片ROM,外部可扩展至64 kB,还具有总线故障管理功能的1 MbpsCAN控制器。虽然P87C592具有内部复位电路,但不能完成外部复位的功能及节点功能的要求。上述可知,X25045可完成系统上电、手动复位、看门狗定时器、电源电压监控、串行E2PROM等功能,能够满足系统要求。 |

图1 P87C592与X25045的硬件电路 |
P87C592的P4.0、P4.1、P4.2、P4.3分别与X25045的片选端、串行输出、串行时钟和串行输入相连,二者的RESET引脚相连。对于X25045内部的E2PROM 读写操作,是通过X25045的SPI(串行外围接口)总线实现,由于P87C592内部没有SPI总线接口控制器,因此通过P87C592的P4.1、 P4.2、P4.3分别模拟SPI总线的数据输出、串行时钟、数据输入时序来实现对X25045的操作。这样,CAN网络节点的地址和模拟输入量的修正值就可以设定在X25045的存储器中,而且只要电源电压降到最小转换电压或者看门狗已达到其设定的超时极限时,系统将复位,确保系统安全稳定运行。
2.2 软件设计
利用简易编程器对X25045内的E2PROM进行编程,只要将编程器与计算机的串行口相连,就可以将数据写入X25045的E2PROM中。
通过其引脚,利用Keil C51编译码可以方便的实现对X25045的设置和读写操作,包括串行输出、串行输入、读单元内容、写状态寄存器、定时器复位等,其软件程序如下:
| (1)串行输入子程序
unsigned char X25045Rece()
{ unsigned char idata i; // 定义变量
unsigned char idata var=0;
for (i=0;i<7;i++) // 8位字节带进位左移
{ sck=1; // 产生SCK脉冲
sck=0;
CY=so; // SO移进位位
if (CY) var+=1; // 带进位左移
var<<=1;}
sck=1;sck=0;CY=so;
if (CY) var+=1; // 判断是否结束
return(var); } // 返回
(2)串行输出子程序
void X25045Send(unsigned char var)
{ unsigned char data i,tem;
for (i=0;i<8;i++) // 8位字节输出
{ sck=0; // 使SCK为低电平
tem=var&0x80; // 选择高位
if (tem==0x80) si=1; // 输出高位
else si=0;
sck=1; // 使SCK为1
var<<=1;} // 左移1位
si=0; } // 清SI
|
(3)写状态寄存器子程序
void Xwrite(unsigned char var, add)
{ sck=0; // 使SCK为低电平
cs=0; // 芯片选择有效
X25045Send(0x02); // WREN指令
X25045Send(add); // 调输出子程序
X25045Send(var); // 调输出子程序
sck=0; // 使SCK为低电平
cs=1; // 芯片选择无效
X25045wip-poll();} // 调看门狗时限子程序
(4)读状态寄存器子程序
unsigned char XBRead(unsigned char add)
{ unsigned char data i;
sck=0; // 使SCK为低电平
cs=0; // 芯片选择有效
X25045Send(0x03); // READ指令
X25045Send(add); // 调输出子程序
i=X25045Rece(); // 调输入子程序
sck=0; // 使SCK为低电平
cs=1; // 芯片选择无效
return(i);} // 返回
(5)看门狗复位程序
void reset()
{cs=1;cs=0;cs=1;} // 设置CS脉冲复位看门狗 |
| 3 实验结果
以X25045和P87C592为核心的智能节点已经成功地应用于水箱水位控制系统,如图2所示。系统采用模糊控制算法在线调整PID参数,上电自动复位系统和初始化系统。当P87C592监测到总线传送故障或总线电源(+12 V)不正常时,X25045会在达到看门狗定时编程时限600 ms后,向系统发出复位信号。当系统受到外界干扰或系统检测的传感器液位信号出现异 |

图2 水箱控制系统框图 |
|
| |
|
|
|
常时,为使系统控制作用不受影响,P87C592将响应复位信号。
系统利用X25045内部的E2PROM,将节点的地址和模拟输入量的修正值设定在X25045的存储器中,当检测到总线节点的地址有冲突时,系统将向总线发出必要的信息。
另外,系统还设有T0中断服务程序,当系统复位时,系统会产生中断,启动初始中断应用程序,重新启用模糊控制算法在线调整PID参数,当偏差绝对值较大时,可以使系统控制信号最大或最小输出,以适应水箱的液位控制要求,从而保证水箱控制的实时性。
实验表明,该系统在电磁干扰严重的现场条件下长期运行,并按工艺要求液位发生变化时,或在扰动作用的情况下,都没有发生系统死机、组态参数丢失等现象,X25045芯片能够为CAN总线节点系统提供必要的保护措施,使系统稳定、可靠、实时运行。
参考文献:
[1] 邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.110-119.
[2] 张毅刚,修林成,胡振江.MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,1996.18-19.
[3] 力源电子股份有限公司.X25043/45数据手册[M].武汉:力源电子出版社,1998.1-10.
|