控制器局域网CAN( Controller Area Network)属于现场总线的范畴,是一种有效支持分布式控制系统串行通信网络。是由德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。由于其高性能、高可靠性以及独特的设计而越来越受到人们的重视,被广泛应用于汽车业、航空业、工业控制、安全防护等领域。 随着CAN总线协议在各个行业和领域的广泛应用,对其的通信格式标准化也提出了更严格的要求。1991年CAN总线技术规范(Version2.0)制定并发布。该技术规范共包括A和B两个部分。其中2.0A给出了CAN报文标准格式,而2.0B给出了标准的和扩展的两种格式

1 CAN总线架构简介

CAN总线是一种用于在不同的ECU(电子控制单元)之间传输数据的线,CAN总线协议是一种ISO 国际标准化的串行通信协议,有 ISO-11898 和 ISO-11519两个系列。其定义有:

  • ISO-11898 定义了通信速率为 125 kbps ~1Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米,如图。
  • ISO11519 定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米,如图。

高速CAN和低速CAN广泛应用于汽车总线,如下图。

CAN总线终端电阻的作用?为什么是120Ω?为什么是0.25W?

CAN通讯速率(位速率)与CAN总线长度的关系大致如下图。

以上介绍了高低速CAN两种总线架构的基本概念,接下来具体看看这两种CAN总线。

2 CAN总线结构信息

将上图2细化,我们可以看到两种CAN总线结构都有CAN_H,CAN_L两根线和多个节点。其中CAN_H和CAN_L线是以双绞形式缠绕,每个节点都有CAN收发器(transceiver)和CAN控制器(controller),CAN收发器和CAN控制器可能集成在芯片(on-chip),也可能是独立于芯片(off-chip)。(图3列举了两种CAN收发器–TJA1054和82C250)

附1: CAN总线抗干扰的6条“军规”

3 CAN总线信号

CAN总线上,信号表现为电压形式,通过CAN_H和CAN_L线上的电位差来表示CAN信号,分为**显性电平(dominant)和隐性电平(recessive)**两种类型。其中显性电平规定为逻辑0,隐性电平则为逻辑1。其具体定义可通过下图来理解。

具体说,如上图第1幅图:当CAN_H和CAN_L的电压均为2.5v,两者电压差为0,就规定CAN信号为隐性电平;当CAN_H的电压为3.5v,CAN_L的电压为1.5v,两者电压差为2V,就规定CAN信号为显性电平。这里实际的规定是:电压差满足定义的一定范围,就可以认为是显性电平或者隐性电平,比如电压差在1.5-2.5v范围,都认为是显性电平。

为了加深理解,看了一段实际采集的电压形式的CAN信号:

4 CAN信号传输

上述的电位差(差分电平)与逻辑电平由CAN收发器实现。在发送过程,CAN控制器将CPU传来的信号转换为逻辑电平。CAN收发器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

在接收过程,CAN收发器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

通俗地讲,就是发送方通过CAN收发器使总线电平发生变化,将其信息传递到CAN总线上。接收方通过监听总线电平,将总线上的消息读入自己的CAN收发器。

5 小结

CAN总线有2种架构,CAN信号有2种形式,CAN信号发送和接收2个过程。