跳到主要内容

CAN 总线简介

CAN 是 Controller Area Network 的缩写,即控制器局域网。CAN 是 ISO 国际标准化的串行通信协议,由德国博世公司于 1986 年率先提出。此后,CAN 通过 ISO 11898 和 ISO 11519 进行了标准化,现已成为欧洲汽车网络的标准协议。

起源

1983年,德国 Bosch 公司为了设计一种用于汽车传动系统的通信系统,开始着手研发 CAN 协议。并列出了以下几个必备条件:

  1. 整个网络的范围比较小;
  2. 能够快速传输少量数据;
  3. 具有故障安全性;
  4. 集成错误排错工具;
  5. 成本低。

1985年,Bosch 公司完成了第一个版本的 CAN 协议,并于次年2月在底特律举办的汽车工程协会(SAE)大会上首次公开亮相,被称为“汽车串行控制器局域网”。

1987年,Intel 半导体公司的首款 CAN 芯片(82526)上市销售。1989年,Philips 半导体公司也开始供应另一种 CAN 控制器(82C200)。

标准化

CAN 协议经过 ISO 标准化后有两个标准:

  • ISO 11898 是针对通信速率为 125Kbps ~ 1Mbps 的高速通信标准;
  • ISO 11519 是针对通信速率为 125Kbps 以下的低速通信标准。

总线电平

CAN 总线是基于相同的波特率通信的,因此只需要两根导线即可通信,即 CAN_L(低电平表示显性位)和 CAN_H(高电平表示显性位)。

  • 总线电平 = CAN_H 的电压 - CAN_L 的电压
  • 显性电平对应逻辑 0,对应总线电平为 2V 左右
  • 隐性电平对应逻辑 1,对应总线电平为 0V

显性电平具有优先权,即只要有一个单元输出显性电平,总线上即为显性电平。隐性电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。

网络拓扑

下图是汽车系统多个 ECU 通过 CAN 总线连接的网络拓扑图。每个通信单元都由 CAN 收发器、CAN 控制器以及 CAN 协议栈(例如 CANopen)组成。

通常,在 CAN 总线的起止端都有一个 120Ω 的终端电阻用于阻抗匹配,以减少回波反射。

功能特点

  • 传输可靠、实时性高的国际标准工业级现场总线;
  • 速度块,距离远,传输距离可达 10km(速率 < 5Kbps),传输速率最高可达 1Mbps(距离 < 40m);
  • 单条总线最多可连接 110 个节点,扩展节点数量也非常方便(节点没有地址信息,因此添加总线节点时不影响其他节点);
  • 多主结构,每个节点的地位平等,区域网络组建方便,总线的利用率也非常高;
  • 高实时性,无损总线仲裁技术,高优先级节点无延迟;
  • 出错的 CAN 节点会自动进行关闭并切断和总线的联系,不影响数据总线的通讯;
  • 消息用于短帧结构和硬件 CRC 验证,干扰概率小,数据误差率很低;
  • 自动检测消息是否发送成功,硬件可以自动重传,传输可靠性极高;
  • 硬件支持报文过滤功能,只接收必要数据信息,减轻 CPU 负担,简化管理软件设计编制;
  • 通信可以采用于普通双绞线、同轴电缆及光纤等;
  • CAN 总线系统结构比较简单,性价比高。

应用领域

CAN 具有很高的实时性和可靠性,因此广泛应用于汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。