CAN总线协议解析篇

 人生低处,是力量的隐藏,加油。

                                                                                                                                        ----小新

一. CAN协议简介

        CAN(Controller Area Network)是ISO国际标准化的一种实时应用的串行通信协议,在汽车电子系统中,用于各种电子系统之间的通信,现在由于CAN的高性能和可靠性被认可,已经被广泛用于工业自动化、工业设备等方面。

        CAN协议经过ISO标准化后有两个标准,ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,ISO11519-2是针对125Kbps以下的低速通信标准。

(1)ISO11898标准和ISO11519-2标准对比表

CAN总线协议解析篇_第1张图片

 

二. CAN协议应用场景

         CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。近年来,它具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强及振动大的工业环境。

   

(1)汽车设计can协议使用场景图 CAN总线协议解析篇_第2张图片 

 

(2)CAN设计原理图

        CAN总线结构都有CAN_HCAN_L两根线多个节点。其中CAN_H和CAN_L线是以双绞形式缠绕,每个节点都有CAN收发器(transceiver)和CAN控制器(controller),CAN收发器和CAN控制器可能集成在芯片(on-chip),也可能是独立于芯片(off-chip)。 

CAN总线协议解析篇_第3张图片 

 

三.CAN协议解析

         数据帧遥控帧都有标准格式扩展格式,这2种格式都具有相同的帧结构。

CAN总线协议解析篇_第4张图片

 

(1)SOF 帧起始

        SOF 段 (Start OfFrame),译为帧起始,帧起始信号只有一个数据位,是一个显性电平,它用于通知各个节点将有数据传输,其它节点通过帧起始信号的电平跳变沿来进行硬同步。

 (2)仲裁场

标准帧:11bit ID + 1bit RTR + IDE(控制场);

扩展帧:11bit ID + SRR +IDE + Extended ID +RTR。

CAN总线协议解析篇_第5张图片

 

 (3)控制场

标准帧:IDE + r0 + DLC;

扩展帧:r1 + r0 + DLC;

DLC 表示数据场长度 0~8字节有效 9~15字节无效。

 (4)数据场

        数据段为数据帧的核心内容,它是节点要发送的原始信息,由 0~8 个字节组成,MSB 先行。

(5)CRC场

        为了保证报文的正确传输,CAN 的报文包含了一段 15 位的 CRC 校验码,一旦接收节点算出的CRC 码跟接收到的 CRC 码不同,则它会向发送节点反馈出错信息,利用错误帧请求它重新发送。CRC 部分的计算一般由 CAN 控制器硬件完成,出错时的处理则由软件控制最大重发数。在 CRC 校验码之后,有一个 CRC 界定符,它为隐性位,主要作用是把 CRC 校验码与后面的 ACK段间隔起来。

(6)ACK 段

        ACK 段包括一个 ACK 槽位,和 ACK 界定符位。类似 I2C 总线,在 ACK 槽位中,发送节点发送的是隐性位,而接收节点则在这一位中发送显性位以示应答。在 ACK 槽和帧结束之间由 ACK 界定符间隔开。

(7)帧结束

        EOF 段 (End Of Frame),译为帧结束,帧结束段由发送节点发送的 7 个隐性位表示结束。

CAN总线协议解析篇_第6张图片

 

 四.CAN总线特性总结

(1)多主工作方式

        CAN总线上的所有节点没有主从之分,反应在数据传输上是:在总线空闲状态下,任意节点都可以向总线上发送信息。另外:最先向总线发送信息的节点获得总线的发送权;当多个节点同时向总线发送消息时,所发送消息的优先权高的那个节点获得总线的发送权。

(2)非破坏性仲裁机制

        非破坏性仲裁机制是一种既不会造成已发送数据的延迟也不会破坏已经发送的数据的仲裁机制,其具体实施需要了解CAN协议帧结构,线与机制等。其中,线与机制简单说就是位与计算,显性电平会覆盖隐性电平(换种方式理解:电路通路情况下,有一个端点接地(GND),那么整个电路电压就接地了)。

(3)系统的柔软性

        与总线相连的节点没有类似于“地址”的信息。因此在总线上增加节点时,连接在总线上的其它节点的软硬件及应用层都不需要改变。

(4)通信速度

        根据整个网络的规模,可设定适合的通信速度。在同一网络中,所有单元必须设定统一通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间可以有不同的通信速度。(简单一句话理解:双方必须需要在同一频道交流,不然沟通就有障碍)。

(5)远程数据请求

        可通过发送“遥控帧” 请求其他单元发送数据。

 

(6) 信息广播

        信息广播就如:节点A发送一条ID 0x12的信息,然后节点B,C,D都能收到

你可能感兴趣的:(网络,fpga开发,信息与通信,面试,单片机,c语言)