CAN总线


一、CAN总线概述

  CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。

  CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

  CAN为了减少外部电磁场对内部点的干扰,通常采用双绞线
在这里插入图片描述

  ISO11898 定义了通信速率为 125 kbps~1 Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米。
  ISO11519 定义了通信速率为 10~125 kbps 的低速 CAN通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米。(标准ISO 11519-2-1994已经在2006年被ISO 11898-3-2006代替了)

二、CAN总线结构

 2.1 CAN结构

  ISO 11898-2中定义了通信速率为125Kbps~1Mbps的高速闭环CAN通信标准,当通信总线长度≤40米,最大通信速率可达到1Mbps,高速闭环CAN(高速CAN)通信如下图所示:

在这里插入图片描述
  ISO 11898-3中定义了通信速率为10~125Kbps的低速开环CAN通信标准,当传输速率为40Kbps时,总线距离可达到1000米。低速开环CAN(低速容错CAN)通信如下图所示:
在这里插入图片描述

 2.2 CAN节点组成

  CAN节点通常由三部分组成:CAN收发器CAN控制器MCU(Microcontroller Unit,MCU)。
  CAN总线通过差分信号进行数据传输,CAN收发器将差分信号转换为TTL电平信号,或者将TTL电平信号转换为差分信号,CAN控制器将TTL电平信号接收并传输给MCU,如下图所示:
在这里插入图片描述
  如果是发送数据:CAN控制器发送一个信号(0或1),CAN收发器将这个信号变成差分信号传送到总线中。
  如果是接收数据:CAN收发器将差分信号转化为0或1的二进制编码。

  在CAN总线上,利用CAN_HCAN_L两根线上的电位差来表示CAN信号(差分信号)。CAN总线上的电位差分为显性电平和隐性电平。其中显性电平逻辑0隐性电平为逻辑1

  ISO11898-2标准(高速闭环CAN通信标准)(125kbps ~ 1Mbps)中CAN信号的表示如下所示:

在这里插入图片描述
  ISO11898-3标准(低速开环CAN通信标准)(10kbps ~ 125kbps)中CAN信号的表示如下所示:
在这里插入图片描述
在这里插入图片描述
  数据发送过程:CAN控制器将CPU传来的信号转为逻辑电平(逻辑0-显性电平、逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

  数据接收过程:CAN发射器将接受的差分电平信号转为逻辑电平CAN控制器接收逻辑电平之后,再将其传递至CPU。

 2.3 CAN报文格式

  CAN的帧主要可分为数据帧远程帧错误帧过载帧帧间隔
  各种帧类型的用途如下表所示,作为数据传递的载体数据帧是最重要的,正常的控制命令、状态信息、诊断数据,刷新数据都是通过数据帧传递的。
在这里插入图片描述

  2.3.1 数据帧

  数据帧结构上由7个段组成,其中根据仲裁段ID码长度的不同,分为标准帧扩展帧

在这里插入图片描述

  (1)帧起始(SOF)、帧结束(EOF)

  帧起始(SOF, Start of Frame)和帧结束(EOF,End of Frame)用于界定一个数据帧,无论是标准数据帧或扩展数据帧都包含这两个段。

  (总线空闲时为隐性位,故帧起始以显性位非常好识别),对于数据帧和遥控帧的标准/扩展格式均如此。

在这里插入图片描述

  (2)仲裁段(Arbitration field)

  表示数据的优先级的段,作用就是根据报文ID来确定其发送优先级。标准格式和扩展格式在此的构成有所不同。
  帧ID分为11位(标准)和29位(扩展)两种。帧ID值越小优先级越高
在这里插入图片描述

  (3)控制段(Control field)

  控制段共6位,表述数据段的字节数
  标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度码DLC组成;
  扩展帧控制段则由IDE(位于仲裁段)、r1r0DLC组成。

在这里插入图片描述

  (4)数据段(Data Field)

  一个数据帧传输的数据量为0~8个字节,从MSB最高位)开始输出。遥控帧没有此段。这种短帧结构使得CAN总线实时性很高,非常适合汽车和工控应用场合。

在这里插入图片描述
  控制段与数据段的关系:
在这里插入图片描述

  (5)CRC段(Cyclic Redundancy Check Field)

   检查帧传输错误的帧,由15位的CRC顺序和1位的CRC界定符(用于分隔位)构成。CRC界定符恒为隐性。

在这里插入图片描述

  (6)ACK段(Acknowledge Field)

  当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平。

在这里插入图片描述

  2.3.2 远程帧(遥控帧)

  与数据帧相比,远程帧结构上无数据段,由6个段组成,同理分为标准格式和扩展格式,且RTR位为1(隐形电平)。

  远程帧:

在这里插入图片描述
   数据帧:

在这里插入图片描述
RTR(Remote Transmission Request):远程发送请求位
SRR(Substitute Remote Request):代替远程请求位
IDE(Identifier Extension):标识符扩展位

   数据帧与远程帧的区别

在这里插入图片描述
在这里插入图片描述

  2.3.3 错误帧

  用于在接收和发送消息时检测出错误通知错误的帧,错误帧由错误标志和错误界定符构成。
在这里插入图片描述
  当出现5种错误类型之一时,发送或接收节点将发送错误帧。错误帧的结构如下,其中错误标识分为主动错误标识和被动错误标识。

在这里插入图片描述
  错误状态的种类有:主动错误状态,被动错误状态和总线关闭态3种状态。单元始终处于3种状态之一。

  (1)主动错误状态:可以正常参加总线通信的状态,处于主动错误状态的单元检测出错误时,输出主动错误标志。

  (2)被动错误状态:是易引起错误的状态。
  处于被动错误状态的单元虽能参加总线通信,但为不妨碍其他单元通信,接收时不能积极地发送错误通知;
  处于被动错误状态的单元即使检测出错误,而其它处于主动错误状态的单元如果没发现错误,整个总线也被认为是没有错误的。
  处于被动错误状态的单元检测出错误时,输出被动错误标志。另外,处于被动错误状态的单元在不能马上再次开始发送。在开始下次发送前,在间隔帧期间内必须插入“延迟传送”(8个位的隐性位)。

  (3)总线关闭状态:总线关闭状态是不能参加总线上通信的状态。信息的接收和发送均被禁止。

  以上这些状态依靠发送错误计算和接收错误计数来管理,根据计数值决定进入何种状态。错误状态和计数值的关系如下表:

在这里插入图片描述

TEC(Transmit Error Counter ):发送错误计数器
REC(Receive Error Counter):接受错误计数器

在这里插入图片描述

  2.3.4 过载帧

  当某些接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点;过载帧由过载标志和过载帧界定符组成。过载帧结构如下:
在这里插入图片描述

  由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象。

在这里插入图片描述

  2.3.5 帧间隔

  帧间隔用于将数据帧或远程帧和他们之前的帧分离开。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间隔。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值