文献阅读归纳——CAN总线

  • Post author:
  • Post category:其他




1 Introduction-引言

CAN总线是由BOSCH(博世)开发的一个多主机、消息广播系统,它规定了最大1M比特每秒(bps)的通信速率。与以太网不同的是,在点对点通信中,CAN不需要在中央主机的监督下,将大块数据从节点a发送到节点B。它采用广播的通信方式,这也为它的安全隐患埋下伏笔。



2 CAN Standard-CAN标准

CAN是国际标准化组织(ISO)定义的串行通信总线,最初是为汽车工业开发的,以两线总线取代复杂的线束。

下附ISO 11898(CAN)体系的结构图

图1

在这里插入图片描述



3 Standard CAN or Extended CAN-标准CAN与扩展CAN

CAN通信协议是一种载波侦听多访问协议,按照消息优先级来冲突检测和仲裁(CSMA/CD+AMP)。

  • CSMA意味着总线上的每个节点在尝试发送消息之前必须等待一段规定的等待时间。
  • CD+AMP意味着冲突时,基于消息标识符字段中每个消息的预编程优先级,通过按位仲裁解决。通常优先级较高的标识符优先访问。



3.1 Standard CAN-标准CAN

图2

图2

  • SOF(1bits):帧开始符(SOF),标志着一个消息的开始,并用于同步总线上被闲置的节点;
  • Identifier(11bits):标准帧标识符,确定消息优先级;
  • RTR(1bits):当需要从另一个节点获取信息时,单个远程传输请求(RTR)位占主导地位。所有节点都接收请求,但标识符能确定指定的节点。响应数据被所有节点接收,并被感兴趣的任何节点使用。这样,系统中使用的所有数据都是统一的;
  • IDE(1bits):扩展标识符被启用,表名该帧为标准CAN帧;
  • r0(1bits):预留位;
  • DLC(4bits):4位数据长度码(DLC)表示正在传输的数据的字节数;
  • Data(0-64bits):数据域;
  • CRC(16bits):冗余检验位(15位加1位分隔符);
  • ACK(2bits):确认位(ACK是2位,一个是确认位,第二个是分隔符。);
  • EOF(7bits):结束符(EOF)标志着CAN帧(消息)的结束,并禁用位填充;
  • IFS(7bits):帧间空间(IFS)表示控制器将正确接收的帧移动到消息缓冲区中适当位置所需的时间量。



3.2 Extended CAN-扩展CAN

图3

在这里插入图片描述

Extended CAN消息与Standard CAN消息相同,只是添加了以下:

  • SRR:替代远程请求(SRR)位将标准消息位置中的RTR位替换为扩展格式的占位符;
  • IDE:标识符扩展(IDE)中的隐性位表示后面还有更多标识符位。18位扩展遵循IDE;
  • r1:在RTR和r0位之后,在DLC位之前包含了一个额外的预留位。



3.3 对比

图4

在这里插入图片描述



4 CAN Message-CAN消息



4.1 Arbitration-仲裁

在标识符中为消息分配优先级是CAN的一个特性,所以它比较适合在实时需求较高的环境中使用。二进制消息标识号越低,其优先级越高。所以一个完全由0组成的标识符是网络中优先级最高的消息,它占据总线的主导时间最长。因此,如果两个节点同时开始发送,则发送0的节点(主导)和发送1的节点(隐性)获得对CAN总线的控制并继续完成其消息。而且在CAN总线上,主位总是覆盖隐性位。

下图显示了仲裁过程。由于节点连续监控自己的传输,当节点B的隐性位被节点C的高优先级显性位覆盖时,B检测到总线状态与它传输的位不匹配。因此,节点B停止传输,而节点C继续发送信息。一旦总线被节点C释放,节点B就会尝试发送该消息。该功能是ISO 11898物理层的一部分,这意味着它完全包含在CAN控制器中,对CAN用户完全透明。

图5

在这里插入图片描述

消息优先级的分配由系统设计人员决定,但是行业组织对某些重要性的消息是相互统一的。例如,电机驱动器的制造商可以指定消息0010是来自CAN网络上的电机的绕组电流反馈信号,0011是转速表的速度。由于0010具有最低的二进制标识符,与当前值相关的消息在总线上总是比与转速计读数相关的消息具有更高的优先级。



4.2 Message Types-消息类型

在can总线上可以传输四种不同的消息类型:数据帧、远程帧、错误帧和过载帧。



4.2.1 数据帧

数据帧时最常见的消息类型,由仲裁字段、数据字段、CRC校验字段和ACK确认字段组成。

  • 由仲裁字段确认消息优先级。仲裁字段在标准帧中为11位标识符和RTR位,在扩展帧中是29位标识符和RTR位。
  • 数据字段长度在0-8字节。
  • CRC校验字段长度为16位,包括15正常位+1位分隔符。
  • 确认字段长度为2位,包括1正常位+1位分隔符。

    任何能够正确接收消息的 CAN 控制器都会发送一个显性 ACK 位,该位会在正确的消息传输结束时覆盖已发送的隐性位。发送器检查显性 ACK 位是否存在,如果未检测到确认,则重新发送消息。



4.2.2 远程帧

远程帧与数据帧类似,但有两个重要区别。 首先,这消息类型通过仲裁中的隐性RTR位标记为显式,其次,没有数据。



4.2.3 错误帧

错误帧是一种特殊帧。当一个节点检测到消息中的错误时发送,并导致该消息中的所有其他节点网络也发送错误帧。 原来的发射器然后自动重新发射消息。CAN控制器中有一个复杂的错误计数器系统,确保节点不会通过重复发送错误帧来占用总线。



4.2.4 过载帧

过载帧在格式上类似于错误帧,并且它是由一个过载的节点发送的,主要用于提供消息之间的额外延迟。



4.3 错误检查和故障隔离

CAN拥有丰富的错误检查程序是其高稳健性的原因之一。

CAN 协议包含五种错误检查方法:三种在消息级别,两种在位级别。

如果使用这些错误检测方法中的任何一种方法返回失败,则接收节点不会接受该消息,并且在接收节点生成错误帧,使得发送节点重新发送消息,直到正确接收。 但是,如果故障节点不断重复发生错误而导致总线挂起,则在达到错误限制(阈值)后,域控制器会取消其传输能力。

消息级别的是CRC和ACK位(如图4所示)。16位CRC包含应用程序数据的校验和,校验和占据15位,分隔符为1位。ACK字段长度为2位,由确认位和确认分隔位组成。最后,在消息级别有一个表单检查,此检查将查找消息中必须始终为隐性位的字段。如果检测到主导位,则产生错误。其中被检查的位是SOF(1bit)、EOF(7bits)、ACK分隔符(1bit)和CRC分隔符位(1bit)。

在位级别,发送的每个位都由消息的发送者监控。如果将数据位(非仲裁位)写入总线,而读取其相反位,则会产生错误。唯一的例外是用于仲裁的消息标识符字段,以及需要隐性位被显性位覆盖的确认位。错误检测的最后一种方法是使用位填充规则,在相同逻辑级别的5个连续位之后,如果下一位不是补码,则生成错误。填充可以确保上升沿可用于网络的持续同步,并且隐性位流不会被误认为是错误帧或表示消息结束的7位帧间空间。在将数据转发到应用程序之前,接收节点的控制器会删除填充位。

根据这种逻辑,一个活动的错误帧由违反位填充规则的六个主要位组成(上文所述5+1模式)。这被所有CAN节点解释为错误,然后CAN节点生成自己的错误帧。这意味着一个错误帧的长度可以从最初的6位到12位,并且包含所有回复。该错误帧之后是一个由八个隐性位组成的定界符字段,以及一个总线空闲期,然后再重新传输损坏的消息。需要注意的是,重新传输的消息仍然需要在总线上进行仲裁。



5 The CAN Bus CAN总线

图1中的数据链路和物理信令层通常对系统操作来说是透明的,它们包含在任何实现CAN协议的控制器中。如下图6

图6

在这里插入图片描述

CAN使用差分信号,平衡差分信号降低了噪声耦合,并允许双绞线上的高信号传输速率。平衡意味着每个信号线中的电流相等,但方向相反,从而产生场抵消效应。

如下图7,在静态时,CANH和CANL为2.5v,在传输态时,分别为3.5v和1.5v,保持一个2v的电压差分信号。

图7

在这里插入图片描述



5.1 CAN Transceiver Features CAN收发器特性



5.1.1 Supply Voltage 电源电压

大多数CAN收发器,如SN65HVD251,需要5伏电源才能达到ISO 11898标准要求的信号电平。由于对高效电路设计的高度重视,TExas仪器SN65HVD23x CAN收发器系列使用3.3-V电源运行,并可在同一总线上与5-V CAN收发器完全互操作。这使得设计人员可以将总节点功率减少50%或更多(图8)。

图8

在这里插入图片描述



reference

[1] Corrigan S . Introduction to the Controller Area Network (CAN). 2002.

[2] Farsi M, Ratcliff K, Barbosa M. An overview of controller area network[J]. Computing & Control Engineering Journal, 1999, 10(3): 113-120.



版权声明:本文为weixin_43657383原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。