基于单片机和CAN控制器和CAN收发器实现多机系统系统的设计
3407
关于 单片机 的多机通信, 许多文章及相关书籍都有介绍,但就其多机通信的方式而言大多为“主从式”,这一通信方式限制了单片机功能的发挥及广泛的应用。利用巧秒的硬件手段实现了单片机多机之间的“对等式”通信,但其通信方式实质上仍是“主从式”。本文介绍了一种基于 CAN 控制器的单片机多机系统,从本质上实现了任意两机之间直接相互通信,从而克服了“主从式”多机通信的缺点。
1、CAN技术简介
CAN(Controller Area Net)即控制器局域网,是主要用于各种过程(设备)监测及控制的一种网络。CAN最初是则德国 BOSCH 公司为汽车的监测、控制系统而设计的。由于CAN具有卓越的特性的极高的可靠必,特别适合于工业过程中 监控 设备的互连,因此,越来越受到工业界的重视。具本来说,CAN具有如下特性:
(1) CAN可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节发送信息,而不分主从,通信方式灵活;
(2) CAN可以点对点、点对多点(成组)及全局广播方式传送接收数据;
(3) CAN网络上的节点信息可分成不同的优先级,可以满足不同的实时要求;
(4) CAN采用非破坏性总线仲载技术。当两个节点是向网络上发送数据时,优先级低的点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,大大地节省了总线仲载冲突时间,在网络负载很重的情况下也不会出现网络瘫痪;
(5) CAN的直接通信距离最大可达10km(速率小于5kbps),最 高通 信速率可达1Mkbps(此时距离最长为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位应置逻辑1。否则,RXI引脚电位必需维持在内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控制器的单片机多机通信系统,由于其通信效率高、抗干扰性强、传输距离较远,适合于中小型分布式控制系统,且由于其价格低廉,在低成本自动化领域有着广泛的应用空间。
责任编辑:gt