了解CAN收发器及如何验证多节点CAN系统的性能

了解CAN收发器及如何验证多节点CAN系统的性能

作者联系方式

Madhura Tapse

Madhura Tapse

摘要

本文介绍了评估"控制器局域网"(CAN)收发器的正确系统级测试方法。通过展示在多CAN节点系统中执行不同CAN节点之间的数据传输时如何避免实际数据传输问题,解释了此种测试方法的优越之处。阅读本文后,读者将对CAN系统有更好的了解,并能够为特定的多节点CAN系统选择合适的CAN收发器。

引言

CAN是一种稳健的通信标准,用于支持不同的传感器、机器或控制器进行相互通信。相比于一般接口,CAN接口更稳定可靠,能够有效处理总线争用,因此被广泛应用于工业自动化、家庭自动化和汽车应用中。

旧版CAN2.0提供8字节有效载荷,最多支持2 Mbps的数据速率。有些情况下,2 Mbps的数据速率不足以应对危急通信事件,因此CAN.org提出了新的通信协议CAN-FD,支持数据速率高达10 Mbps的通信。

CAN-FD灵活的数据速率

旧版CAN和CAN-FD之间的主要区别在于灵活的数据速率(FD)。在CAN-FD中,数据速率(即每秒传输的位数)比经典CAN(10 Mbps仅用于数据有效载荷;为了兼容,仲裁位速率仍限制在1 Mbps)快5倍。CAN-FD中的消息有效载荷大小从旧版CAN的8字节增加到64字节。

使用CAN-FD时,传感器可以改变数据速率,并增加或减少有效载荷。与如今工厂中的旧版CAN相比,更快的数据速度和更大的有效载荷容量带来了许多系统级操作优势。

CAN通信—基础知识

CAN通信包括两个主要组件:(a) CAN控制器和(b) CAN收发器,如图1所示。

图1. 单一CAN节点。

CAN控制器处理CAN通信的数据链路层,而CAN收发器则处理物理层。我们来简要介绍一下CAN收发器的物理层。

在CAN协议中,逻辑0被称为显性位,逻辑1被称为隐性位。由于CAN是一种差分协议,CANH和CANL之间的电压差决定了发射和接收信号的逻辑电平。如果CANH-CANL电压大于1.5 V,则CAN接收器将该位识别为逻辑0。而如果CANH-CANL电压小于200 mV,则CAN接收器将该位识别为逻辑1。图2所示为CAN收发器TXD引脚上数字逻辑1和逻辑0位的连续传输,以及CANH和CANL引脚上的等效CAN总线电平。根据CANH和CANL电压之间的差异,接收器在RXD引脚上回送信号。

图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控制器和收发器测试方法。使用这种方法背后的原因是什么?

仲裁方法

使用这种系统级测试方法的主要原因是CAN协议的仲裁特性。如果两个节点试图同时占用总线,则使用非破坏性逐位仲裁来进行访问。将第一个标识符位作为0(显性)发送的节点将保留对CAN总线的控制, 并继续完成其消息传送, 而其他节点发送的是1(隐性)。图4所示为两个节点之间的仲裁方案。

图4. 双节点系统中的CAN仲裁。

在此图中,节点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系统中,有时位速率会较标准CAN2.0推荐的1 Mbps有所增加,以加快数据传输。在CAN-FD系统中,仲裁位速率被限制为1 Mbps的数据速率,而数据位速率可高达10 Mbps。在包括11位标识符和SOF位的仲裁阶段,每个传输的位都被读回以进行同步。

CAN节点在CAN总线边缘上同步,但总线上的信号传输时间会在节点之间引入相位差。CAN的非破坏性仲裁机制要求任意两个节点之间的相位差小于半个比特时间。该标准比特时间的下限定义了标称位速率以及总线长度的上限。因此,RXD的上升时间和下降时间、CAN收发器的环路延迟以及电缆都需要考虑在内。在更高的位速率下(例如10 Mbps),传输延迟和上升时间/下降时间需要小于50 ns。

因此,CAN-FD中的仲裁位速率被限制为1 Mbps,允许更高的余量用于同步多个可能的节点。然而,CAN-FD是一个新协议,尚未应用于所有CAN系统。在某些情况下,CAN-FD控制器不可用或者被认为是代价高昂的附加组件,因此客户继续使用标准CAN控制器。在这些系统中,由于涉及关键传感器信息且节点之间的线缆长度可能更短,CAN节点需要以更高的位速率(>2 Mbps)进行通信。在这种情况下,收发器的上升时间/下降时间对称性和传输延迟可能会对允许的数据通信上限造成限制。

CAN收发器需要系统级测试

以CAN收发器MAX33012E为例,该收发器已经过20米线缆测试,速率最高可达13.3 Mbps。可以看到,在图5中,TXD2位宽为75 ns(对应于13.3 Mbps),RXD2位宽为72 ns。当控制器以80%的TXD位宽进行采样时,包括所需RXD的上升时间/下降时间和环路延迟在内的最小RXD位宽为60 ns。在图5中,可以看到接收到的位宽为72 ns。因此,MAX33012E满足条件,并且足够稳健,能够在更高的位速率下工作。在这种情况下,CAN控制器不会检测到任何错误,并且会继续执行数据通信。

图5. MAX33012E CAN数据传输。

图6所示为同样在13.3 Mbps速度下进行测试的竞品的范围。对于该部分,传输位宽为75 ns(对应于13.3 Mbps),并且接收位宽小于传输位宽(48 ns)的80%。因此,仲裁阶段位传输失败,导致通信错误,最终系统停止工作。

图6. 竞品的CAN数据传输。

这些类型的数据传输错误只能通过执行完整的系统级测试来发现,其中包括多个CAN控制器、CAN收发器和一根长线缆。

结论

对CAN收发器进行系统级测试有助于揭示系统中未来可能出现的数据传输问题。可使用满足所需时序和电压规格的CAN控制器和线缆来评估CAN收发器,从而避免这些问题。CAN系统的稳健性取决于CAN系统中每个组件性能的累积结果。仅评估一个组件或CAN收发器并不能准确测量系统功能。对系统进行预先验证比等到发生故障后才更换系统更加经济高效。因此,我们强烈建议在选择CAN控制器之前进行系统级测试。