×
接口总线驱动 > 总线 > 详情

CAN总线简述

发布时间:2020-05-27 发布时间:
|
一、CAN通信概述
        CAN ( Controller  Area  Network ) 即控制器局域网络。由于其高性能、高可靠性、及独特的设计,CAN越来越受到人们的重视。国外已有许多大公司的产品采用了这一技术。
        CAN最初是由德国的BOSCH公司为汽车监测、控制系统而设计的。现代汽车越来越多地采用电子装置控制,如发动机的定时、注油控制,加速、刹车控制(ASC)及复杂的抗锁定刹车系统(ABS)等。由于这些控制需检测及交换大量数据,采用硬接信号线的方式不但烦琐、昂贵,而且难以解决问题,采用CAN总线上述问题便得到很好地解决。
 
二、CAN总线特点
       CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。其物理传输层详细和高效的定义,使得 CAN总线具有其它总线无法达到的优势,注定其在工业现场总线中占有不可动摇的地位,CAN总线通信主要具有如下所示的优势和特点。
      1.CAN总线上任意节点均可在任意时刻主动的向其它节点发起通信,节点没有主从之分,但在同一时刻优先级高的节点能获得总线的使用权,在高优先级的节点释放总线后,任意节点都可使用总线; 
     2.CAN总线传输波特率为5Kbps~1Mbps ,在 5Kbps 的通信波特率下最远传输距离可以达到10Km,即使在1Mbps 的波特率下也能传输 40m 的距离。在1Mbps 波特率下节点发送一帧数据最多需要134μ s; 
     3.CAN总线采用载波监听多路访问、逐位仲裁的非破坏性总线仲裁技术。在节点需要发送信息时,节点先监听总线是否空闲,只有节点监听到总线空闲时才能够发送数据,即载波监听多路访问方式。在总线出现两个以上的节点同时发送数据时,CAN协议规定,按位进行仲裁,按照显性位优先级大于隐性位优先级的规则进行仲裁,最后高优先级的节点数据毫无破坏的被发送,其它节点停止发送数据(即逐位仲裁无破坏的传输技术)。这样能大大的提高总线的使用效率及实时性; 
     4.CAN总线所挂接的节点数量主要取决于CAN总线收发器或驱动器,目前的驱动器一般都可以使同一网络容量达到110 个节点。CAN报文分为两个标准即CAN2.0A标准帧和CAN2.0B扩展帧,两个标准最大的区别在于CAN2.0A只有11 位标识符,CAN2.0B具有 29 位标识符; 
     5.CAN总线定义使用了硬件报文滤波,可实现点对点及点对多点的通信方式,不需要软件来控制。数据采用短帧发送方式,每帧数据不超过8 字节,抗干扰能力强,每帧接收的数据都进行CRC校验,使得数据出错机率极大限度的降低。CAN节点
     6.CAN总线通信介质可采用双绞线、同轴电缆或光纤,选择极为灵活。可大大节约组网成本。
 
三、CAN协议规范(CAN规范2.0) 
      CAN为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。技术规范的目的是为了在任何两个CAN仪器之间建立兼容性。可是,兼容性有不同的方面,比如电气特性和数据转换的解释。为了达到设计透明度以及实现灵活性,根据ISO/OSI参考模型,CAN 2.0规范细分为以下不同的层次:数据链路层(数据链路层的LLC 子层和MAC子层)和物理层。
      MAC子层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上什么时候开始发送新报文及什么时候开始接收报文,均在MAC子层里确定。位定时的一些普通功能也可以看作是 MAC子层的一部分。理所当然,MAC子层的修改是受到限制的。 
      物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输。同一网络的物理层对于所有
的节点当然是相同的。尽管如此,在选择物理层方面还是很自由的。
 
四、CAN的错误定义及处理
1.错误类型
位错误 
      站单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。但是在仲裁场的填充位流期间或 ACK间隙发送一“隐性”位的情况是例外的——  此时,当监视到一“显性”位时,不会发出位错误。当发送器发送一个被动错误标志但检测到“显性”位时,也不视为位错误。 
填充错误 
     如果在使用位填充法进行编码的信息中,出现了第 6 个连续相同的位电平时,将检测到一个填充错误。 
CRC 错误 
     CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。
形式错误 
     当一个固定形式的位场含有1 个或多个非法位,则检测到一个形式错误。
应答错误 
    只要在ACK间隙(ACK SLOT)期间所监视的位不为“显性”,则发送器会检测到一个应答错误。
 
2.错误等级划分
主动错误 Error Counter  < 127
错误警告 Error Counter = = Error
被动错误 Error Counter > 127
总线关闭 Error Counter = = 255
“错误主动”的单元可以正常地参与总线通讯并在错误被检测到时发出主动错误标志。 
“错误被动”的单元不允许发送主动错误标志。“错误被动”的单元参与总线通讯而且在错误被检测到时只发出被动错误标志。而且,发送以后,“错误被动”单元将在预设下一个发送之前处于等待状态。
“总线关闭”的单元不允许在总线上有任何的影响(比如,关闭输出驱动器)
 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
嵌入式系统实时性的问题