CAN是一种强大的通信标准,用来支持各类不同的传感器、机器或控制器之间的相互通信。CAN接口,基于其更好的健壮性,并能有效地处理总线竞用问题,故在工业自动化、家庭智能化和汽车中得到广泛应用。
早期的CAN2.0可提供8字节有效载荷,标准推荐数据速率为1Mbps (实际上其速率可以高达2Mbps)。不过有时候,2Mbps的数据速率仍不足以应对关键事件通信,因此CAN.org提出了一种新的通信协议CAN-FD,新协议所支持的数据通信速率可高达10Mbps。
灵活的数据速率
传统CAN和CAN-FD之间的主要区别在于数据灵活性(FD)。在CAN-FD中,数据速率(即每秒传输的比特数)比经典型CAN快5倍,数据有效载荷达到10Mbps(不过,为了兼容,仲裁比特率仍限制在1Mbps)。CAN-FD中的消息有效载荷长度增加到64字节,而传统CAN仅为8字节。
利用CAN-FD,传感器可以控制有效载荷的长度来改变数据速率。在现代工厂中,相较于传统的CAN系统,更快的数据率和更大的有效载荷量,能带来了许多系统级操作优势。
CAN通信原理
如图1所示,CAN通信有如下两个主要组成部分:
·CAN控制器
·CAN收发器
图1:单节点CAN。(本文图片来源:ADI)
CAN控制器负责处理通信的数据链路层,而CAN收发器则负责处理物理层。CAN收发器的物理特性将在稍后进行简要介绍。
在CAN协议中,逻辑0被称为显性位,逻辑1则被称为隐性位。由于CAN是一种差分协议,故CANH和CANL之间的电压差决定了传输和接收信号的逻辑电平。如果该电压差高于1.5V,则CAN接收器将该位识别为逻辑0;反之,如果该电压差低于200mV,则CAN接收器将该位识别为逻辑1。图2所示为CAN收发器的几种连续传输信号迹线图,包括TXD引脚上数字逻辑1和逻辑0,CANH和CANL引脚上的等效CAN总线电平。而RXD引脚上为接收器环回信号,该信号也基于CANH和CANL之间的电压差。
图2:CAN协议物理层。
CAN数据链路层,为比特流的受控传输制定数据帧,还有助于解决错误检测和总线竞用问题。图3所示为CAN的标准帧结构。
图3:CAN协议数据链路层。
每个节点以帧头(SOF)为数据帧开始,SOF是第一个显性比特。随后的11位标识符是每个节点的唯一地址。IDE表示帧结构。该位为逻辑0时,表示CAN为标准格式,而该位字段为逻辑1则表示CAN为扩展格式。r0是保留位。DLC字段则表示要传输的数据字节数。在CAN2.0标准帧中,可传输的字节最多为8个。接收节点通过在总线上发送显性比特来确认收到该数据帧。最后,是一个隐性的帧尾(EOF),它标志着一个数据帧的结束。
大多数情况下,在选择评估CAN收发器时,用户是在CAN收发器的TXD引脚上,通过发送比特流(利用函数生成器)来进行评估的。尽管评估单节点CAN时,这种方法非常适合,但在开发多节点、远距离CAN系统时,该方法似乎存在缺陷。因此,为了给系统选择合适的CAN收发器,有必要进行新型的CAN控制器和收发器系统测试,原因如下:
仲裁
需要这种系统级测试方法的主要原因,在于CAN协议的仲裁特性。如果两个节点试图同时占用总线,则利用非破坏性的逐位仲裁来实现访问。发送第一个“0”(显性)标识符位的节点,保留对CAN总线的控制权,CAN总线将继续完成其消息传送,(而此时的另一个节点则发送一个“1”(隐性))。图4显示了两个节点之间的这种仲裁方案。
图4:双节点系统中的CAN仲裁。
在图4中,节点1和节点2通过CAN总线互连。因此,CANH和CANL信号对两个节点都是公用的。TXD1和RXD1是节点1的信号,而TXD2和RXD2则是节点2的信号。正如图中所看到的,节点1和节点2的前三位都是相同的,分别为1、0、1。注意第四位,节点2的该位是1,而节点1的该位则是0。由于节点1具有显性比特,因此它赢得了仲裁,可以继续发送完整消息。节点2并对该消息进行确认。一旦节点1完成传输,节点2就开始发送消息。反过来,节点1对此进行确认。
每个节点都有一个唯一的标识符ID。因此,这个11位的标识符ID用于仲裁过程。控制器将读取这些比特,以识别消息传输的优先级。在CAN-FD中,仲裁比特率与数据比特率可以不同。而在CAN2.0中,这两者则是相同的。
同步
在传统的CAN2.0系统中,比特率有时会比标准所推荐的1Mbps增加一点,但最高也就只能达到2Mbps。而在CAN-FD系统中,其标准数据比特率则可以高达10Mbps,不过为了兼容,仲裁比特率仍被限制在1Mbps。无论是哪一种,在包括11位标识符和SOF位的仲裁阶段期间,每个发送位都将被读回,目的是为了同步。
CAN节点在总线观察边缘上同步,不过,总线上的信号传播时间将会在不同节点之间引入相移。CAN用于媒体访问控制的无损仲裁机制,要求任意两个节点之间的相移小于半位时间。标称比特时间的下边界定义了标称比特率以及总线长度的上边界。因此,RXD的上升时间和下降时间、CAN收发器的环路延迟以及电缆引起的延迟,需要全部计算在内。对于高比特率(例如10Mbps),传播延迟和上升时间/下降时间要求小于50ns。
兼容
由于CAN-FD中的仲裁比特率被限制为1Mbps,从而为尽可能多节点间的同步提供了更高的裕度。然而,CAN-FD是一种新技术,尚未在所有CAN系统中采用。在某些情况下,根本没有CAN-FD控制器,或者是客户认为成本太高,因此不得不采用原来的标准CAN控制器。但在这些系统中,可能是由于传感器信息比较关键,或许是节点之间的电缆长度较短,从而又要求CAN节点间的通信采用更高的比特率(>2Mbps)。在这种情况下,收发器的上升时间/下降时间对称性以及传播延迟,都可能限制数据通信速率的上限。
测试实例
以CAN收发器MAX33012E为例,利用20米电缆时,该收发器已经通过了高达13.3Mbps的速率测试,结果如图5所示。
图5:MAX33012E CAN数据传输。
在图5中,TXD2位宽为75ns(相当于13.3Mbps),RXD2位宽是72ns。当控制器以TXD位宽的80%进行采样时,包括所需RXD的上升时间/下降时间和环路延迟在内,RXD最小位宽为60ns。另外,还可以看到接收到的位宽是72ns。因此,MAX33012E满足条件,并且足够健壮,可以更高的比特率工作。在这种情况下,CAN控制器没有检测到任何错误,并继续执行数据通信。
然而,相对于上述成功测试实例,许多CAN通信产品在传输速率较高时,仲裁阶段的比特传输常常会失败,比如结果为图6所示的测试。该测试发送比特宽度也是75ns(对应于13.3Mbps),并且接收比特宽度小于发送比特宽度(48ns)的80%。不难发现,仲裁阶段的比特传输失败,导致通信错误,最终导致系统停止工作,其结果如图6所示。
图6:发生错误的CAN通信数据传输示意图。
实际上,与图6所示结果相关的许多类型的数据传输错误,都只能通过执行完整的系统级测试方能发现。注意,系统级测试需包括所有CAN控制器、CAN收发器和一根长电缆。
结论
CAN收发器的系统级测试,有助于发现系统中可能存在的数据传输问题。通过对带有满足时序和电压规范的CAN控制器和电缆的CAN收发器进行评估,就可以避免这些问题。而CAN系统的健壮性则是由系统中每个部件累积起来的。故仅评估单个CAN收发器,是无法对系统功能进行准确度量的。相对于发生故障后不得不进行维修更换而言,系统的预先验证则更具成本效益。因此,在选择CAN控制器之前,进行系统级测试验证是极为重要的。
(参考原文:validating-multinode-can-system-performance)
本文为《电子工程专辑》2023年12月刊杂志文章,版权所有,禁止转载。点击申请免费杂志订阅