前言
CAN (Controller Area Network)总线,又称控制器局域网,是Bosch公司在现代汽车技术中领先推出的一种多主机局域网。由于其卓越的性能,极高的可靠性,独特灵活的设计和低廉的价格,现已广泛应用于工业现场控制、智能大厦、小区安防、交通工具、医疗仪器、环境监控等众多领域。CAN已被公认为几种最有前途的现场总线之一。 CAN 总线上的节点是网络上的接收和发送站。智能节点能通过编程设置工作方式、ID地址、波特率等参数。它主要由单片机和可编程的CAN通信控制器组成。本文介绍这类节点的硬件设计和软件设计。软件设计包括SJA1000的初始化、发送和接收等应用中的最基本的操块子程序。
CAN 总线与其它几种现场总线比较而言,是最容易实现、价格最为低廉的一种,但其性能并不比其它现场总线差。这也是目前CAN总线在众多领域被广泛采用的原因。节点是网络上信息的接收和发送站。所谓智能节点是由微处理器和可编程的CAN控制芯片组成,它们有两者合二为一的,如芯片P8XC59;有如本文介绍的独立的通信控制芯片与单片机接口。后者的优点是比较灵活。当然,也有不要微处理器的节点。下面以CAN通信控制器SJA1000为例,对CAN总线系统智能节点硬件和软件设计作一下全面的介绍。
SJA1000简介
SJA1000是PHILIPS公司早期CAN控制器PCA82C200的替代品,功能更强,具有如下特点:
①完全兼容PCA82C200及其工作模式,即BASICCAN模式;
②具有扩展的接收缓冲器,64字节的FIFO结构;
③支持CAN2.0B;
④支持11位和29位识别码;
⑤位速率可达1Mbit/s;
⑥支持peliCAN模式及其扩展功能;
⑦24MHz的时钟频率;
⑧支持与不同微处理器的接口;
⑨可编程的CAN输出驱动配置;
⑩增强了温度范围(-40℃~+125℃)。
一、CAN通信控制器SJA1000功能简介
SJA1000是一种独立CAN控制器。它是PHILIPS公司的PCA82C200 CAN控制器的替代产品。SJA1000具有Basic CAN和Peli CAN两种工作方式。PeliCAN工作方式支持具有很多新特性的CAN 2.0B协议。
CAN 的通信协议主要由CAN控制器完成。CAN控制器主要由实现CAN总线协议的部分和实现与微处理器接口部分的电路组成。对于不同型号的CAN总线通信控制器,实现CAN协议部分电路的结构和功能大多相同,而与微处理器接口部分的结构和方式存在一些差异。这里主要以SJA1000为代表对CAN控制器的功能作一个简单介绍。
SJA1000在软件和引脚上都是与它的前一款PAC82C200独立CAN控制器兼容的(SJA1000引脚功能如表1所列),在此基础上增加了很多新的功能。为了实现软件兼容,SJA1000采用了两种工作方式:Basic CAN方式(PCA82C200兼容方式)和Peli CAN方式(扩展特性方式)。工作方式通过时钟分频寄存器中的CAN方式位来选择。上电复位默认工作方式是Basic CAN方式。Basic CAN和PeliCAN方式的区别如下:
在PeliCAN方式下,SJA1000有一个重新设计的含很多新功能的寄存器组。SJA1000包含PCA82C200中的所有位,同时增加了一些新的功能位。PeliCAN方式支持CAN2.0B协议规定的所有功能(29位的标识符)。
表1 SJA1000引脚功能
符 号 引 脚 功 能
AD0AD7 2,1,2823 地址/数据复用总线
RD 5 微控制器的读信号(Intel方式)或E信号(MOTOROLA式)
WR 6 微控制器的写信号(Intel方式)或读写信号(MOTOROLA方式)
ALE 3 ALE信号(INTEL方式)或AS信号(MOTOROLA方式)
CS 4 片选输入,低电允许访问SJA1000
CLKOUT 7 SJA1000产生的提供给微控制器的时钟输出信号,此信号由内部振荡器经可编程分频器得到。可编程禁止该引脚
VSS1 8 逻辑电路地
XTAL1 9 振荡放大器输入,外部振荡放大器信号经此引脚输入
XTAL2 10 振荡放大器输出,使用外部振荡信号时此引脚必须开路
MODE 11 方式选择输入端:1=Intel方式,0=MOTOROLA方式
VDD3 12 输出驱动器5V电源
TX0 13 由输出驱动器0至物理总线的输出端
TX1 14 由输出驱动器1至物理总线的输出端
VSS3 15 输出驱动器地
INT 16 中断输出端,用于向微控制器提供中断信号
RST 17 复位输入端,用于重新启动CAN接口(低电平有效)
VDD2 18 输入比较器5V电源
RX0,RX1 19,20 由物理总线至SJA1000输入比较器的输入端。显性电平将唤醒处于睡眠方式的SJA1000。当RX0高于RX1时,读出为隐性电平,否则为显性电平
VSS2 21 输入比较器地
VDD1 22 逻辑电路5V电源
SJA1000的主要新功能如下:
*标准结构和扩展结构报文的接收和发送;
*可进行读/写访问的错误计数器;
*可编程的错误报警限制;
*64字节的接收FIFO;
*标准和扩展帧格式都具有单/双接收滤波器(含接收屏蔽和接收码寄存器);
*最近一次的错误代码寄存器;
*每一个CAN总线错误都可以产生错误中断;
*具有丢失仲裁定位功能的丢失仲裁中断;
*支持热插拔(无干扰软件驱动位速率检测);
*单发方式(当发生错误或丢失仲裁时不重发);
*只听方式(监听CAN总线,无应答,无错误标志);
*硬件禁止CLKOUT输出。
二、智能节点硬件电路设计
本文中所设计的CAN总线系统智能节点,采用89C51作为节点的微处理器。在CAN总线通信接口中,采用PHILIPS公司的SJA1000和82C250芯片。SJA1000是独立CAN通信控制器,82C250为高性能CAN总线收发器。
电路主要由四部分构成:微控制器89C51、独立CAN通信控制器SJA1000、 CAN总线收发器82C250和高速光电耦合器6N137。微处理器89C51负责SJA1000的初始化,通过控制SJA1000实现数据的接收和发送等通信任务。
SJA1000的AD0~AD7连接到89C51的P0口。CS连接到89C51的P2.0,P2.0为0的CPU片外存储器地址可选中SJA1000, CPU通过这些地址可对SJA1000执行相应的读写操作。SJA1000的RD、WR、ALE分别与89C51的对应引脚相连,INT接89C51的 INT0。89C51也可通过中断方式访问SJA1000。