基于SJA1000的CAN总线控制系统的设计与实现

2011-05-16 08:48:13来源: 互联网

0 引言

    CAN-bus(Controller Area Network)即控制器局域网是国际上应用最广泛的现场总线之一。最初CAN-bus被设计作为汽车环境中的微控制器通讯工具,用于在车载各电子控制装置ECU之间交换信息,从而形成汽车电子控制网络。如今,CAN-bus作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,已被广泛应用到各个自动化控制系统中。而且CAN-bus总线在通信能力、可靠性、实时性、灵活性、易用性、传输距离等方面较RS-485总线有着明显的优势。因而用CAN总线取代RS-485总线将是大势所趋。

1 CAN总线的主要特性

CAN总线与其它通信网的不同之处有二:一是报文传送中不包含目标地址,它是以全网广播为基础,各接收站根据报文中反映数据性质的标识符来过滤报文,该收的收下,不该收的弃而不用。其好处是可在线上网下网、即插即用和多站接收;二是特别强化数据安全,可满足控制系统及其它较高数据要求的系统需求。CAN具有以下主要技术特性:

(1)CAN遵从ISO模型,采用了其中的物理层、数据链路层与应用层。采用双绞线,通信速率最高可达到1 Mbps/40 m,直接传输距离最远可达10 kin/5 kbps。同一段总线内最多可挂接110个设备。

(2)CAN的信号传输采用短帧结构,每一帧有效字节数为8个。因而传输时间短,受干扰的概率低。当节点发生严重错误时,CAN可自动关闭该节点,同时切断与总线的联系,以使总线上其它节点不受影响,因此CAN总线具有很强的抗干扰能力。

(3)CAN可支持多主工作方式,网络上任一节点在任何时候均可主动向其它节点发送信息,同时也支持点对点、一点对多点和全局广播方式来接收/发送数据。处于优先级低的节点会主动停止发送,以此来避免总线冲突。

2 CAN总线接口硬件电路的设计

硬件电路的设计主要是CAN通信控制器与微处理器之间和CAN总线收发器与物理总线之间的接口电路的设计。CAN通信控制器是CAN总线接口电路的核心,主要完成CAN的通信协议,而CAN总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI),实现热防护等。

2.1 CAN总线接口电路

SJA1000硬件接口原理图如图l所示。图中,CAN总线控制器SJA1000的ADO-AD7连接到AT89C51的P0口。片选端CS取反后连接到AT89C51的P2.7,当P2.7为1时,CPU片外存储器地址可选中SJA1000。CPU通过这些地址可对SJA1000执行相应的读/写操作(即:SJA1000首地址为8000H)。SJA1000的RD、WR、ALE分别与AT89C51的对应引脚相连。由于SJA1000是低电平复位,而AT89C51是高电平复位,所以两者的复位端接法不同。另外,当SJA1000的11脚MODE接高电平时,可选择Intel二分频模式。SJA1000的16脚(INT)是中断信号输出端,在中断允许的情况下,有中断发生时,16脚会输出由高电平到低电平的跳变,因此将AT89C51的外部中断输入脚(INT0)与该脚相连接,即可通过中断方式来访问SJA1000。为了增强CAN总线节点的抗干扰能力,本设计采用SJA1000的具有光电隔离的CAN总线接口。SJA1000的发送输出端TX0与接收输入端RXO、RX1分别经高速集成光电耦合器6N137隔离后,与CAN总线接口驱动芯片82C250的TXD和RXD相连,82C250直接与CAN物理总线相连。CAN总线驱动器PCA82C250是CAN控制器和物理总线之间的接口,具有可向总线的差动发送数据和CAN控制器的差动接收数据的功能。


2.2设计注意事项

在进行电路设计时应注意以下几点:

(1)总线两端必须接两个终端匹配电阻Rs,若忽略掉它们,会使数据通信的抗干扰性及可靠性大大降低。

(3)SJA1000的TX1脚悬空时,RX1引脚的电位必须维持在约0.5Vcc上,否则,将不能形成CAN协议所要求的电平逻辑。因本系统传输距离近,环境干扰小,可以不用电流隔离,这样可以直接把82C250的Vref端(约为0.5 Vcc)与SJA1000的RX1相连,从而简化了电路设计。

(4)设计时将SJA1000的CLOCKOUT的时钟信号接至AT89C51的时钟电路输入端,来作为AT89C51的外部时钟输入,从而解决了时钟同步问题:同时将SJA1000中断输出信号/INT接至AT89C51的/INT0端,通过中断方式与AT89C51进行通信。

3系统软件设计

系统上电后首先对82C250和SJA1000进行初始化。以确定工作主频、波特率、输出特性等,然后通过查询方式获取模数转换采样值,并把该值通过SJA1000传送到CAN总线上由上位PC机来进行显示控制。而对来自CAN总线上的信息则采用中断方式处理,系统每接收到一帧信息,便产生一次中断以触发微处理器进入中断模式,然后在中断服务程序中读取该帧信息并传送到现场。SJA1000的初始化程序如下:

    MOV DPTR,#CR:控制寄存器CR的地址送DPTR
    MOVA,#01H
    MOVX@DPTR,A:进入复位模式
    MOV DPTR,#CDR
    MOVA,#00H
    MOVX@DPTR,A:选择BASIC CAN模式、时钟不输出
    MOV A,#NODECODE
    MOVX @DPTR,A;节点号NODECODE写入ACR
    MOVX DPTR,#AMR
    MOV A,#00H
    MOV @DPTR,A;AMR置为0,当且仅当RXID0=ACR时接收数据
    MOV DPTR,#BTR0;设定总线时序寄存器BTR0,系统采用12 MHz晶振
    MOV A,#85H;分频后总线时钟频率为2MHz
    MOVX @DPTR,A;同步跳转宽度为3tscl
    MOV DPTR,#BTR1;设定总线时序寄存器BTR1
    MOV A,#OB4H:位同步时间为1个tsc1,采样开始位置TSEG1=5tsc1
    MOVX @DPTR,A;TSEG2=4tsc1,每一位时间10tsc1(200 kHz),每位采样3次
    MOV DPTR,#OCR;设置输出控制寄存器
    MOV A,#1AH:数据从TX0按正常输出模式同极性输出
    MOV @DPTR,A;TX1不用
    MOV DPTR,#CR;初始化完成,使控制器退出复位模式,进入工作模式工作。
    MOV A,#06H
    MOV @DPTR,A

SJA1000在经过初始化后便开始接收或发送数据,其程序流程分别如图2和图3所示。



4结束语

该接口电路在经DP-51H单片机通讯仿真实验仪的调试后,结果表明它能模拟实现通信功能,且其抗干扰性能优良,通信速率较高,电路也比较简单,是开发与应用其它CAN总线产品的基础。

关键字:控制系统  设计  实现

编辑:eeleader 引用地址:http://www.eeworld.com.cn/gykz/2011/0516/article_5975.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
控制系统
设计
实现

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved