CAN总线通信网络智能节点的软硬件设计

2014-09-21 07:14张春林
长春大学学报 2014年6期
关键词:收发器中断报文

张春林,赵 丽

(1.中国科学院 长春光学精密机械与物理研究所,长春 130033;2.长春职业技术学院,长春 130033)

0 引言

CAN总线是一种分布式控制或实时控制的串行通信网络,许多的著名汽车制造厂、农用机械、数控机床、机械工业、机器人、纺织工业、医疗器械及传感器等领域都采用CAN总线来实现总控制系统与各检测机构和执行机构间的数据通信。由于采用了许多新技术及独特的设计,CAN总线是唯一被国际标准化组织批准的现场总线,可实时、可靠、灵活进行数据通信[1]。

1 CAN总线通信系统的结构

CAN总线通信系统由CAN网络节点、转发器节点和上位机构成[2]。节点是网络上信息的接收站和发送站,由于总线收发器物理信号驱动能力的限制,在一个CAN总线的网络上,最多可挂接110个节点。所有智能节点由CAN总线连接成一个网络体系,实现基本的控制功能。

2 CAN总线智能节点电路设计

2.1 微处理器与总线控制器的接口电路设计

CAN控制器SJA1000与微处理器的接口电路如图1所示。采用STC89C51作为系统中的CAN总线智能节点的微处理器。STC系列单片机是美国STC公司最新推出的一种新型51内核的单片机,是新一代超强抗干扰、高速、低功耗的单片机[3]。

CAN总线控制器选用SJA1000,因其引脚和电气参数与 CAN控制器PCA82C200兼容,能够较好完成CAN总线通信。SJA1000具有两种工作模式:BasicCAN模式和PeliCAN模式,有扩展的接收缓冲器64字节,先进先出(FIFO),支持CAN2.0A和CAN2.0B协议,支持11位和29位标识码,通信速率可达1Mbps,最大24MHz时钟频率,可与不同的微处理器接口,可编程的CAN输出驱动器配置,温度适应范围大(-40~+125℃)。

因此将SJA1000的8位数据线连接到STC89C51的P0口,CS连接到 STC89C51的 P2.7,P2.7低电平有效,可选中SJA1000。SJA1000的RD、WR、ALE、分别与STC89C51的读、写和地址锁存控制引脚相连,进而对SJA1000执行相应的读/写操作。

复位引脚连接到 STC89C51的 P2.2,SJA1000的复位过程可由单片机控制。SJA1000的 INT接STC89C51的中断引脚 INT0,单片机可通过中断方式访问 SJA1000。VDD1、VDD2和 VDD3是输入比较器5V电源的输入端,VSS1、VSS2和VSS3是输入比较器的接地端。X1和X2两个引脚外接16M晶振。

2.2 CAN总线收发器和控制器接口电路设计

图1 CAN控制器SJA1000与微处理器的接口电路

CAN总线收发器采用PCA 82C250。PCA82C250是CAN控制器与物理总线之间的接口,它最初是为在汽车中提供高速信号通信而设计的,82C250采用双线差分驱动,驱动电路内部具有限流电路,可以防止发送输出级对电源、地及负载短路。

为了保护MCU不受CAN总线上的干扰信号影响,在总线收发器与SJA1000中引入高速光电耦合器6N137进行系统隔离,如图2所示,这样的连接使两端的电路较为独立的工作,互不干扰,也能够实现节点间的电气隔离,增强了CAN总线节点的抗干扰能力,降低误码率,减少出错重发的次数。为防止雷击,起过压保护的作用,PCA82C250的总线与地之间均反接一个保护二极管,两根总线分别并联了2个30pF的电容,可以抗高频干扰和抑制电磁辐射。其中R12和R13为两个120Ω的电阻,起到限流和保护作用。

图2 CAN总线收发器与总线控制器的接口电路

6N137是一款高速光耦合器,是输入输出之间的转换装置。作为一款线性接收装置,它突破了传统线性装置对环境的限制,更适应于噪声环境。

两个6N137的输入端IN+分别接总线控制器和收发器的电源正极,5脚分别接电源地,IN-端接输入信号,当有信号输入时,受光器能够接受到光线并产生光电流,从而在输出端产生一定的电压,实现了“电-光-电”转换,起到了电气隔离的作用。在输出端与地之间接入15pF的电容来滤波。

3 CAN总线智能节点软件设计

3.1 SJA1000初始化程序设计

上电后,单片机先进行上电复位操作,之后对相关的寄存器进行初始化设置。SJA1000只有工作在复位模式才能进行寄存器的状态设置,在设置之前,必须首先对复位模式标识进行设置,在这之前,要先关闭SJA1000的中断源,之后再进行相关寄存器的设置,其流程图如图3所示。

3.2 SJA1000报文发送子程序

可采用中断方式或查询的方式发送报文。在本系统中,采用查询方式发送报文。发送时首先查询一下上次报文是否发送完成,完成后判断发送缓冲区是否锁定,解锁后将报文写入SJA1000的发送缓冲器,再启动发送命令,之后CAN控制器自动完成报文的发送。

3.3 SJA1000报文接收子程序

这里单片机采用外部中断0来接收报文。这里采用外部中断电平触发的方式,在 SJA1000中,当一个报文被无误地接收后,SJA1000便会向单片机发送一个低电平中断信号,请求单片机接收报文,单片机则会在该中断信号下产生一个INT0中断。

进入中断程序后,单片机首先判断其中断类型是否为接收中断,其次判断是否为合法中断,如果是接收中断,并且为合法中断,系统将检测该报文是否有效,如有效则进行报文接收[4]。系统将接收的报文暂时存储在单片机的存储单元中,接收后重新开放中断。

图3 SJA1000初始化程序流程图

4 结语

本文主要介绍了CAN总线智能节点的软硬件设计,采用单片机STC89C51作为微控制器,配合SJA1000独立CAN总线控制器组成下位机实时通信的智能节点,保证了CAN总线网络工作稳定性和实时性;系统进行了光电隔离,增强了系统的稳定性和可靠性。该系统能够应用在医疗、汽车、农业、工厂等许多场合,应用范围广,推广价值高。

[1]莫莉,张叶茂.基于CAN总线的嵌入式监控网络智能节点设计[J].轻工科技,2012(4):82-83.

[2]贾筱莹,高沁翔.无功与谐波补偿装置CAN总线通信网络设计[J].电力通信系统,2005,26(9):44-46.

[3]肖林京,张瑞雪,常龙,等.基于CAN总线的矿用新能源电机车通信网络设计[J].测控技术,2013,32(5):64-66.

[4]祝敏.基于CAN总线的大棚温湿度监控系统的设计[J].自动化与仪器仪表,2010(1):57-60.

猜你喜欢
收发器中断报文
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
光纤收发器故障排除经验谈
浅析反驳类报文要点
基于FPGA的中断控制器设计*
跟踪导练(二)(5)
千里移防,卫勤保障不中断
Virtex5 FPGA GTP_DUAL硬核两个收发器独立使用的实现
ATS与列车通信报文分析
基于RocketIO 高速串行回环通信的实现