CAN总线简介

CAN总线简介

             1.

 引言

随着汽车工业的发展,20世纪80年代中期,率先由Bosch公司研发出新一代的汽车总线即控制器局域网(Controller Area Network,简称:CAN总线或CAN-bus),CAN总线具有布线简单、典型的总线型结构、可最大限度的节约布线与维护成本、稳定可靠、实时、抗干扰能力强、传输距离远等特点,这些都决定了CAN总线必定是一种成功的总线。一经推出不仅在汽车行业得到广泛的推广与应用,在诸如航天、电力、石化、冶金、纺织、造纸等领域也得到广泛应用。在自动化仪表、工业生产现场、数控机床等系统中也越来越多的使用了CAN总线,CAN总线在未来的发展中依然充满活力,有着巨大的发展空间。

由于CAN总线本身只定义ISO/OSI模型中的第一层(物理层)和第二层(数据链路层),通常情况下CAN总线网络都是独立的网络,所以没有网络层。在实际使用中,用户还需要自己定义应用层的协议,因此在CAN总线的发展过程中出现了各种版本的CAN应用层协议,现阶段最流行的CAN应用层协议主要有CANopen、DeviceNet和J1939等协议。

本系列文章主要介绍CAN总线、基于CAN总线的应用层协议—CANopen,以及CANopen设备的应用及组网方式。本文主要介绍CAN总线相关的概念及网络结构。

2.

 CAN总线特点

CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以进行正常的通信。在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽干扰信号),CAN协议推荐用户使用屏蔽双绞线作为CAN总线的传输线。在隐性状态下,CAN-H与CAN-L的输入差分电压为0V(最大不超过0.5V),共模输入电压为2.5V。在显性状态下,CAN-H与CAN-L的输入差分电压为2V(最小不小于0.9V),如下图 1所示。

 

 

图 1 CAN总线位电平特点

其物理传输层详细和高效的定义,使得CAN总线具有其它总线无法达到的优势,注定其在工业现场总线中占有不可动摇的地位,CAN总线通信主要具有如下所示的优势和特点。

 CAN总线上任意节点均可在任意时刻主动的向其它节点发起通信,节点没有主从之分,但在同一时刻优先级高的节点能获得总线的使用权,在高优先级的节点释放总线后,任意节点都可使用总线;

 CAN总线传输波特率为5Kbps~1Mbps,在5Kbps的通信波特率下最远传输距离可以达到10Km,即使在1Mbps的波特率下也能传输40m的距离。在1Mbps波特率下节点发送一帧数据最多需要134μs;

 CAN总线采用载波监听多路访问、逐位仲裁的非破坏性总线仲裁技术。在节点需要发送信息时,节点先监听总线是否空闲,只有节点监听到总线空闲时才能够发送数据,即载波监听多路访问方式。在总线出现两个以上的节点同时发送数据时,CAN协议规定,按位进行仲裁,按照显性位优先级大于隐性位优先级的规则进行仲裁,最后高优先级的节点数据毫无破坏的被发送,其它节点停止发送数据(即逐位仲裁无破坏的传输技术)。这样能大大的提高总线的使用效率及实时性;

 CAN总线所挂接的节点数量主要取决于CAN总线收发器或驱动器,目前的驱动器一般都可以使同一网络容量达到110个节点。CAN报文分为两个标准即CAN2.0A标准帧和CAN2.0B扩展帧,两个标准最大的区别在于CAN2.0A只有11位标识符,CAN2.0B具有29位标识符;

 CAN总线定义使用了硬件报文滤波,可实现点对点及点对多点的通信方式,不需要软件来控制。数据采用短帧发送方式,每帧数据不超过8字节,抗干扰能力强,每帧接收的数据都进行CRC校验,使得数据出错机率极大限度的降低。CAN节点在错误严重的情况下具有自动关闭的功能,避免了对总线上其它节点的干扰;

 CAN总线通信介质可采用双绞线、同轴电缆或光纤,选择极为灵活。可大大节约组网成本。

 

             3.

 CAN控制器介绍

随着CAN总线不断的发展壮大,符合CAN2.0A和CAN2.0B协议的独立芯片越来越多。如NXP公司推出的SJA1000及SJA1000F,可以直接与普通单片机组合,使该单片机具有CAN通信的能力。随着CAN需求的日益增大,芯片厂商也把CAN控制器直接集成到芯片内部,例如NXP公司的LPC2119、LPC2294、LPC2378等。以下主要以LPC2378的集成CAN控制器为例,对CAN控制器作一个介绍。

LPC2378 CAN控制器结构如图 2所示。该控制器是一个带有发送和接收缓冲器的串行接口,但它并不含有验收过滤器。验收过滤器是一个独立的模块,能够对所有CAN通道进行CAN标识符过滤。

 

 

图 2 LPC2378 CAN控制器结构

LPC2378 CAN控制器工作流程主要分为发送过程和接收过程。

 发送过程

 

CAN控制器是完全受处理器控制,CPU通过内部总线向CAN控制器的发送寄存器里填写需要发的数据,然后启动CAN控制器的发送使能,发送的数据分别经过位流管理器(变成在总线上发送的二进制码)、错误管理逻辑(负责检测总线状态及发送是否出现错误)及位时序逻辑(管理数据在总线上的发送时序)、CAN收发器(负责把位流数据转换成CAN总线够传输的差分电平),这样就完成了一帧CAN数据的发送,如图 3所示。

 

图 3 发送过程

 接收过程

 

CAN数据的接收与CAN数据的发送是一个相反的过程,如图 4所示。当CAN收发器检测到CAN总线上有数据时,CAN收发器把CAN总线上的差分信号转换成位流数据,经过错误管理器及位时序逻辑单元对位数据流和时序进行检查,再经过位流管理器把位流数据转换成字节数据并存放到接收缓冲器中,当一帧数据接收完了之后则由接收缓冲器产生数据接收中断(通知CPU已经接收到一帧新数据),并将产生的各种状态通过改变状态寄存器的值来表示。

 

图 4 接收送过程

以上主要介绍LPC2378 CAN工作流程,CAN2.0A/B标准协议在CAN控制器中都得以实现,用户只需要操作相关的CAN寄存器就可以控制CAN控制器动作(控制器的具体操作请参考LPC2378数据手册),因此可以大大提高CAN节点的开发时间,提高工作效率。

             4.

 CAN总线网络结构

作为一个总线型网络,其结构如图 5所示,其组网与维护相当方便。CAN总线具有在线增减设备,即总线在不断电的情况下也可以向网络中增加或减少节点。一条总线最多可以容纳110个节点,通信波特率为5Kbps~1Mbps,在通信的过程中要求每个节点的波特率保持一致(误差不能超过5%),否则会引起总线错误,从而导致节点的关闭,出现通信异常。

 

 

图 5 CAN网络典型结构

             5.

 CAN总线应用层协议

由于CAN总线只定义了ISO/OSI中的物理层和数据链路层,因此对于不同的应用出现了不同的应用层协议,为了使不同厂商的产品能够相互兼容,世界范围内需要通用的CAN应用层通信协议,在过去的二十年中涌现出许多的协议,不过到现在为止能够广泛被承认的协议却不多,现在CAN应用层协议主要有以下三种。

 在欧洲等地占有大部分市场份额的CANopen协议,主要应用在汽车、工业控制、自动化仪表等领域,目前由CIA负责管理和维护;

 J1939是CAN总线在商用车领域占有绝大部分市场份额的应用层协议,由美国机动车工程师学会发起,现已在全球范围内得到广泛的应用;

 DeviceNet协议在美国等地占有相当大的市场份额,主要用于工业通信及控制和仪器仪表等领域。

             在以后的文章中将向读者重点介绍CANopen协议的基本概念及CANopen相关设备的使用及组网方法。

 

时间: 2024-10-22 18:52:01

CAN总线简介的相关文章

微型计算机总线简介

任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现.为了简化硬件电路设计.简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线.采用总线结构便于部件和设备的扩充,尤其制定了统一的总线标准则容易使不同设备间实现互连. 微机中总线一般有内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连;而系统总线是微机中各

AXI总线简介

AXI全称Advanced eXtensible Interface,是Xilinx从6系列的FPGA开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式.在ZYNQ中继续使用,版本是AXI4,所以我们经常会看到AXI4.0,ZYNQ内部设备都有AXI接口.其实AXI就是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能.高带宽.低延迟的片内总线,也用来替代以前的AHB和APB总线.第一个版本的AX

1.5 PCI-X总线简介

PCI-X总线仍采用并行总线技术.PCI-X总线使用的大多数总线事务基于PCI总线,但是在实现细节上略有不同.PCI-X总线将工作频率提高到533MHz,并首先引入了PME(Power Management Event)机制.除此之外,PCI-X总线还提出了许多新的特性. 1.5.1 Split总线事务 Split总线事务是PCI-X总线一个重要特性.该总线事务替代了PCI总线的Delayed数据传送方式,从而提高了Non-Posted总线事务的传送效率.下文以存储器读为例,说明PCI-X设备如

ARM嵌入式开发系统与CAN总线

 随着集成电路和嵌入式电脑在汽车上的广泛应用,现代汽车上的电子控制器的数量越来越多,常见的有发动机的电子燃油喷射装置.防抱死制动装置(ABS).安全气囊装置.电动门窗装置.主动悬架等.电控系统的增加虽然提高了轿车的动力性.经济性和舒适性,但随之增加的复杂电路也降低了汽车的可靠性,增加了维修的难度.从布线角度分析,传统的电子气系统大多采用点对点的单一通信方式,相互之间少有联系,这样必然造成宠大的布线系统.因此,一种新的概念--汽车上电子控制器局域网络CAN,也就应运而生.为使不同厂家生产的零部件能

FC总线技术简介

FC是由美国标准化委员会(ANSI)的X3T11小组于1988年提出的高速串行传输总线,解决了并行总线SCSI遇到的技术瓶颈,并在同一大的协议平台框架下可以映射更多FC-4上层协议.FC具备通道和网络双重优势,具备高带宽.高可靠性.高稳定性,抵抗电磁干扰等优点,能够提供非常稳定可靠的光纤连接,容易构建大型的数据传输和通信网络,目前支持1x.2x.4x和8x的带宽连接速率,随着技术的不断发展该带宽还在不断进行扩展,以满足更高带宽数据传输的技术性能要求.FC在航电上的应用主要包括:FC-AE.FC-

VME总线

简介 诞生于25年前的VME(VersaModule Eurocard)总线是一种通用的计算机总线,结合了Motorola公司Versa总线的电气标准和在欧洲建立的Eurocard标准的机械形状因子,是一种开放式架构.它定义了一个在紧密耦合(closely coupled)硬件构架中可进行互连数据处理.数据存储和连接外围控制器件的系统.经过多年的改造升级,VME系统已经发展的非常完善,围绕其开发的产品遍及了工业控制.军用系统.航空航天.交通运输和医疗等领域. 2特点 VME的数据传输机制是异步的

Linux 2.6.19.x 内核编译配置选项简介

Linux 2.6.19.x 内核编译配置选项简介 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件.您可以自由链接.下载.传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明. 其他作品 本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有作品的列表: 金步

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 关于

消息总线重构之EventBus

最近花了不少时间对消息总线进行了重构.重构的重点是在消息总线中加入了Guava的EventBus,并应用于以下两个场景: (1)改进广播通知 (2)业务逻辑串联,用事件驱动替代责任链模式 EventBus简介 EventBus是Google的开源项目Guava里的一个组件,有兴趣的人可以看我前不久的一篇博文解读.总得来说,EventBus是观察者模型的实现,利用它你既可以实现观察者模型的业务场景,还可以基于它的事件驱动机制来实现应用程序内组件之间的解耦与通信. 改进广播通知 广播通知是消息总线提