CAN(Controller Area Network)即控制器局域网络。由于其具有较强的抗干扰能力、通讯中没有地址的概念及节点数不受限制等优点,已经被广泛应用于汽车、数控机床、仪器仪表、现场总线控制等领域。在CAN总线的节点设计中,目前应用较多的是通过单片机的控制来实现。有的单片机已经嵌入了CAN控制器的功能,比如Philips的P8XC592,Motorola的68HC05X4等,但这类单片机的应用并不普及,而且价格相对较高。对于目前应用最为普及、价格也很便宜的MCS-51系列单片机,本身并不嵌有CAN控制器的功能。下面就给出一种基于MCS-51单片机和SJA1000的CAN总线节点设计方法。
1、 CAN总线简介
CAN 总线是现场总线的一种,它是德国Bosch 公司在1986 年为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通讯总线。它与其它总线最大的区别是两个节点之间传送信息时报文中没有地址信息,而是对不同性质的数据加以标识。在通讯时,以全网广播为基础,各接收节点根据报文中反映数据性质的标识符过滤报文,该收的收下,不该收的弃而不用。虽然CAN总线最初是为在汽车行业应用而开发的,但由于其具有很强的纠错能力,支持差分收发,因而适合高噪声环境,而且传输距离比较远。另外,象Philips,Motorola,Intel等半导体制造商相继开发出了支持CAN协议的集成芯片,更是推动了CAN总线的应用。目前,CAN总线在数控机床、医疗设备、工业控制等领域也取得了广泛的应用。1993年,国际标准化组织正式颁布了CAN总线的国际标准ISO11898。其具体特性如下:
(1)CAN网络上的节点信息可以分成不同的优先级,用来满足不同的实时要求。
(2)CAN为多主工作方式,网络上任一节点均可在任意时刻主动地向网络上的其他节点发送信息,而不分主从。
(3)当多个节点同时向总线发送信息时,CAN采用非破坏性总线仲裁技术,低优先级的节点会依此退出发送,而最高优先级的节点正常发送,不会受到任何影响,极大地节省了总线冲突仲裁时间。
(4)发送期间若丢失仲裁或由于出错而遭破坏的帧可自动重发送。
(5)CAN的直接通讯距离最远可达到10km(速率5kbps以下),通讯速率最高可以达到1Mbps(此时通讯距离最长为40m)。
(6)CAN的每帧信息都有CRC校验及其它检错措施,保证了出错率很低。
(7)CAN节点在错误严重的情况下具有自动关闭,退出总线的功能,从而使总线上的其它接点不受影响。SOC开发平台360元 单片机开发系统498元 单片机学习板138 无线nRF-9E5模块100元 51单片机试验开发板238元 Genius NSP通用编程器260元 Mini ARMDebugger330元 LABTOOL-48UXP2800元 S3C2410 ARM9开发板800
2、 SJA1000的介绍
SJA1000是Philips生产的独立CAN总线控制器,它是早期的PCA82C200的替代产品。它与PCA82C200在管脚、电气特性上完全兼容,不仅有和PCA82C200一样的基本CAN(BasicCAN)工作模式,而且新增加了增强CAN(PeliCAN)工作模式,这种模式支持具有很多新特性的CAN2.0B协议。经过简单连接和正确设置的SJA1000,能自动完成CAN总线物理层和数据链路层的所有功能,对于单片机来说,只要把它看成一个基本的I/O设备即可,使用非常简单、方便。SJA1000的主要特性如下:
(1)扩展的接受缓冲器(64字节,先进先出FIFO)。
(2)和CAN2.0B协议兼容。
(3)同时支持11位和29位识别码。
(4)位速率最高可达1Mbits/s。
(5)支持多种微处理器接口。
(6)增强的温度适应性。
3、 节点硬件电路设计说明
目前广泛流行的CAN器件分两大类,一类是独立的CAN控制器,如PCA82C200、SJA1000等,另一类就是带有CAN功能的微控制器,如Philips的P8XC592,Motorola的68HC05X4等。考虑芯片的市场普及程度、开发工具及成本等因素,在这次设计中选用单片机AT89C51为核心,SJA1000为CAN控制器,同时还使用了PCA82C250,它是CAN控制器的接口芯片。从功能上来分,SJA1000主要完成CAN的通讯协议,实现报文的装配和拆分、接收信息的过滤和校验等。PCA82C250则是实现CAN控制器和通讯线路的物理连接,提高CAN总线的驱动能力和可靠性。具体电路如下图所示,虽然整个电路比较简单,但结合本人设计、现场调试的体会,给出下面几点说明。
(1)SJA1000并没有和单片机共用复位电路,而是通过单片机的一I/O口来控制,这样,SJA1000的复位就可以方便地由单片机通过软件来控制。
(2)SJA1000的地址/数据端和单片机的P0口相连时,不需要再加锁存器,因为它内部已经有地址锁存功能。
(3)SJA1000 的TX1 脚悬空, RX1 引脚的电位必须维持在约0.5VCC上, 否则将不能形成CAN 协议所要求的逻辑电平。
(4)总线上电阻R3、R4一定不能省略,它们对匹配总线阻抗起着相当重要的作用,如果去掉它们,系统通讯的可靠性和抗干扰能力就会大大降低,甚至不能正常工作。
4 、 软件设计
和硬件电路相比,软件的设计相对来说要复杂的多。而且,其中还涉及到有关通讯协议的问题,对于不同的控制系统、不同的功能要求,CAN总线通讯软件的差别很大,在此不可能一一列出。但是,对于基于SJA1000的CAN总线系统,它们开始时都必须对SJA1000进行初始化,而这种初始化的流程是基本一致的。下面给出用汇编语言编制的SJA1000的初始化程序,假设SJA1000的首地址为0100H,其中设置波特率的有关参数是针对晶振为12M,波特率为500Kbit/s计算出来的。另外,在整个CAN总线系统中,所有节点设置的波特率必须一致,否则,系统就不能正常工作。
MODE EQU 0100H
BTR0 EQU MODE+6
BTR1 EQU MODE+7
ACR0 EQU MODE+16
AMR0 EQU MODE+20
OCR EQU MODE+8
RBSA EQU MODE+30
CDR EQU MODE+31
MOV A,#01H
MOV DPTR,#MODE
MOVX @DPTR,A
MOV A,#0C0H
MOV DPTR,# CDR
MOVX @DPTR,A
MOV A,#1AH
MOV DPTR,# OCR
MOVX @DPTR,A
MOV A,#85H
MOV DPTR,# BTR0
MOVX @DPTR,A
MOV A,#0B4H
MOV DPTR,# BTR1
MOVX @DPTR,A
MOV A,#00H
MOV DPTR,# RBSA
MOVX @DPTR,A
MOV A,#0FFH
MOV DPTR,# AMR0
MOV R0,#04H
BEGIN10:MOVX @DPTR,A
INC DPTR
DJNZ R0,BEGIN10
MOV A,#00H
MOV DPTR,#MODE
MOVX @DPTR,A
5、 结束语
CAN 具有较强的纠错能力,适用于高噪声环境, 并具有较远的传输距离, 现已广泛应用于许多领域,该设计作为CAN总线节点的一个模块,能够和仪器仪表等设备相结合,使其具有网络通讯的能力,有着广阔的应用前景。