《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 基于CAN控制器的对等式单片机多机系统的通信

基于CAN控制器的对等式单片机多机系统的通信

2009-04-16
作者:周宝龙 岳继光 萧蕴诗

  摘  要: 针对单片机多机系统主从式通信的缺点,提出了利用CAN控制器实现单片机多机系统对等式通信,并对其硬件组成原理、通信程序的设计做了详细的分析。

  关键词: 单片机多机系统  “对等式”通信  控制器局域网(CAN)

 

  关于单片机的多机通信,许多文章及相关书籍都有介绍,但就其多机通信的方式而言大多为“主从式”,这一通信方式限制了单片机功能的发挥及广泛应用。虽然文献[1]利用巧秒的硬件手段实现了单片机多机之间的“对等式”通信,但其通信方式实质上仍是“主从式”。本文介绍了一种基于CAN控制器的单片机多机系统,从本质上实现了任意两机之间的直接相互通信,从而克服了“主从式”多机通信的缺点。

1 CAN技术简介

  CAN (Controller Area Net)即控制器局域网,是主要用于各种过程(设备)监测及控制的一种网络。CAN最初是由德国BOSCH公司为汽车的监测、控制系统而设计的。由于CAN具有卓越的特性和极高的可靠性,特别适合于工业过程中监控设备的互连,因此,越来越受到工业界的重视。具体来讲,CAN具有如下特性:

  (1)CAN可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活;

  (2)CAN可以点对点、点对多点(成组)及全局广播方式传送接收数据;

  (3)CAN网络上的节点信息可分成不同的优先级,可以满足不同的实时要求;

  (4)CAN采用非破坏性总线仲裁技术。当两个节点同时向网络上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,大大地节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪;

  (5)CAN的直接通信距离最大可达10km(速率小于5kbps),最高通信速率可达1Mbps(此时距离最长为40m)。

2 基于CAN控制器的对等式单片机多机系统软硬件设计

2.1 系统硬件设计

2.1.1 系统组成原理及通信过程

  所谓对等式通信,就是单片机多机系统中任一节点均可主动地与其它节点直接交换数据,而无须经过第三方。从此角度出发,我们设计的基于CAN控制器的单片机多机系统组成如图1所示。

 

 

  系统中的每个节点由单片机、CAN控制器、CAN收发器组成。单片机主要用于系统的计算及信息处理等功能;CAN控制器主要用于系统的通信;CAN收发器主要用于增强系统的驱动能力。系统的发送过程是:单片机将外围设备或其他节点传送过来的信息处理后,按CAN规范规定的格式将其写入CAN控制器的发送缓冲区,并启动发送命令,把数据发送到CAN总线上;接收过程是:CAN控制器从CAN总线上自动接收数据,并经过滤后存入CAN接收缓冲区,且向单片机发出中断请求,此时单片机可从CAN接收缓冲区读取要接收的数据。

2.1.2 系统节点硬件设计举例

  图2是所研制的低成本农业温室控制系统中与本文相关部分的硬件电路图。

 

 

  设计时应注意以下几点:

  (1)总线两端各有一个120Ω的电阻,对于匹配总线阻抗起着相当重要的作用。否则,数据通信的抗干扰性及可靠性大大降低,甚至无法通信。

  (2)为了CAN与单片机之间时序的同步,一般采用CAN控制器给单片机提供时钟信号,此时时钟信号对CHMOS型单片机应接XTALI引脚,对HMOS型单片机应接XTAL2引脚。

  (3)若CAN收发缓冲器用集成元器件,则RX1脚应接地,且CDR寄存器中的CBP位应置逻辑1。否则,RX1引脚电位必需维持在2.5V以上,且CDR寄存器中的CBP位应置逻辑0,以形成CAN要求的逻辑电平。

2.2 系统软件设计

  系统软件设计的关键是通信程序的设计。通信软件由三部分组成:初始化程序、发送程序、接收程序。由于系统中任意一节点在任意时刻均可主动与其它节点通信,所以,各节点的通信程序相同。

2.2.1 初始化程序

  初始化程序主要是通过对CAN控制器控制段中的寄存器写入控制字从而确定CAN控制器的工作方式等。有三种方式进入初始化程序:一是上电复位;二是硬件复位;三是软件复位,即运行期间通过给CAN控制器发一个复位请求,置复位请求位为1。在复位期间,必需初始化的寄存器有:MR(PeliCAN模式)模式寄存器、CDR时分寄存器、ACR接收代码寄存器、MAR屏蔽寄存器、BTR总线定时寄存器、OCR输出控制寄存器等。需要注意的是,这些寄存器仅能在复位期间可写访问。因此,在对这些寄存器初始化前,必须确保系统进入了复位状态。初始化程序的流程图如图3所示。

 

 

2.2.2 发送程序

  信息从CAN控制器发送到CAN总线是由CAN控制器自动完成的。发送程序只需把被发送的信息帧送到CAN的发送缓冲区,且启动发送命令即可。发送程序可采用查询方式或中断方式。由于查询方式比较简单,这里仅讨论中断方式发送程序的设计。对于中断方式,发送程序分为两部分:一是主程序;二是中断服务程序。主程序主要用于控制信息的发送及当发送缓冲区满时,把要发送的信息暂存到临时存储区;中断发送程序负责把临时存储区中的暂存信息发送出去。两者的流程图分别见图4、图5。

 

 

2.2.3 接收程序

  信息从CAN总线到CAN接收缓冲区是由CAN控制器自动完成的。接收程序只需从接收缓冲区读取要接收的信息即可。接收程序也可采用查询方式或中断方式,两者的繁简程度相当,此处以查询方式为例给出接收程序的流程图(见图6)。

 

 

  以上给出的流程图均为一般性流程图。在使用时应结合实际项目具体化,并且发送程序中可能会有应急处理,接收程序中会有数据过载情况。限于篇幅,此处不予以讨论。

  基于CAN控制器的单片机多机通信系统,由于其通信效率高、抗干扰性强、传输距离较远,适合于中小型分布式控制系统,且由于其价格低廉,在低成本自动化领域有着广泛的应用空间。

 

参考文献

1 彭宗乾.MCS-51单片机多机通信的组成原理及通信程序.电子技术应用,1992;(18)4

2 SJA1000 Stand-alone CAN controller Application Note Philips Semiconductor.1997

3 阳宪惠.现场总线技术及其应用.北京:清华大学出版社,1999.6

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。