CAN协议概览

CAN物理层

CAN总线

CAN总线使用带位填充的不归零(NRZ)。有两种不同的信号状态:显性(逻辑0)和隐性(逻辑1)。这些状态对应于特定的电气等级(有几种,取决于所用的物理层)。模块以串联与的形式连接到总线:即使只有一个节点把总线置于显性状态,整条总线都将处于该状态(不管有多少个节点在发送隐性位)。

不同的物理层

物理层定义总线上的电气等级和信号方案、线缆阻抗以及类似的物理性能。

有几种不同的物理层:

  • 最常见的类型是CAN标准ISO 11898-2部分定义的物理层,这是一种双线对称信号方案。这种物理层有时候也称为“高速CAN”。
  • 同一ISO标准的另一部分ISO 11898-3为较低的总线速度定义另一种双线对称信号方案。这种物理层具有容错功能,所以,即使一条总线线缆断开或短路到地线或电池,信号仍可继续传输。有时候称为“低速CAN”。
  • SAE J2411定义一种单线路(当然加上地线)物理层。主要用在汽车中(例如GM-LAN)。
  • 存在几种专用的物理层。
  • 在早期不存在CAN驱动程序时,使用RS485的修改版。
  • 此处是一些示波镜图片,可供对报文细节感兴趣的用户参考 >>

按照规则,不同的物理层不能互操作。一些组合在情况良好时可能能够运行,或者看上去能够运行。例如,在同一总线上组合使用“高速”和“低速”收发器有时候可以运行。

大量CAN收发器芯片都是由Philips生产,其它供应商包括Bosch、Infineon、Siliconix和Unitrode。

一种非常常见的类型是82C250收发器,它实现由ISO 11898定义的物理层。82C251是一种改进的版本。

“低速CAN”的一种常见收发器是来自Philips的TJA1054。

最大总线速度

按照标准,CAN总线的最大速度是1 Mbit/s。但是,一些CAN控制器能够处理大于1 Mbit/s的更快速度,可考虑用于特殊的应用。

低速CAN(ISO 11898-3,参见上面内容)可以达到125 kbit/s。

单线CAN在标准模式中大约可以达到50 kbit/s,使用特殊的高速模式(例如用于ECU编程)可以达到大约100 kbit/s。
最小总线速度

请注意,一些总线收发器不允许低于特定的比特率。例如,使用82C250或82C251,最低比特率可达10 kbit/s而没有问题,但是如果使用TJA1050,则不能低于大约50 kbit/s。请检查数据表。

最大线缆长度

速度为1 Mbit/s时可以使用的最大线缆长度大约是40米(130英尺)。这是因为仲裁方案需要信号的波前端可以在位被采样之前传播到最远的节点并重新传回来。换句话说,线缆长度受限于光的速度。曾经考虑过增加光速的建议,但是后来被否决了,因为这关系到银河系的未来。

其它的最大线缆长度是(这些值是大概的数值):

  • 100米(330英尺),速率为500 kbit/s时。
  • 200米(650英尺),速率为250 kbit/s时。
  • 500米(1600英尺),速率为125 kbit/s时。
  • 6千米(20000英尺),速率为10 kbit/s时。

如果光学连接器被用来提供电气隔离,那么最大总线长度相应地减小。提示:使用快速光学连接器,观察不是指定的最大比特率时通过设备的延迟。
总线端接

ISO 11898 CAN总线必须进行端接。这可以通过在总线各个端点使用120欧姆的电阻实现。端接实现两个目的:

  1. 除去总线末端的信号反射。
  2. 确保总线获得正确的DC电平。

对于ISO 11898 CAN总线,不管速度快慢,始终必须进行端接。我将重复这一点:对于ISO 11898 CAN总线,不管速度快慢,始终必须进行端接。对于实验性工作,一个端接器可能已经足够。如果你的CAN总线在没有进行任何端接的情况下能够运行,那么这只是您比较幸运而已。

注意,诸如“低速CAN”、单线路CAN以及其它物理层不一定需要进行端接。但是高速ISO 11898 CAN总线将始终需要至少一个端接器。

线缆

ISO 11898规定的线缆阻抗名义上是120欧姆,但是实际上允许[108..132]欧姆区间的阻抗。

目前市场中满足这种需求的线缆并不多。将来很有可能会扩大允许的阻抗区间。

ISO 11898针对屏蔽或未屏蔽的双绞线而定义。单线路标准SAE J2411的制定工作正在进行之中。

CAN连接器

CAN总线连接器根本没有任何标准!通常,每种上层协议定义一种或几种首选的连接器类型。常见类型包括