嵌入式开发文档

CAN介绍

CAN,全称为“ControllerAreaNetwork”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。

一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用PhilipsP82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。

CAN起源

CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。1993年,CAN已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN仍可提供高达50Kbit/s的数据传输速率。由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。

CAN传输模式

CAN通讯协议主要描述设备之间的信息传递方式。CAN层的定义与开放系统互连模型(OSI)一致。每一层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的规范定义了模型的最下面两层:数据链路层和物理层。下表中展示了OSI开放式互连模型的各层。应用层协议可以由CAN用户定义成适合特别工业领域的任何方案。已在工业控制和制造业领域得到广泛应用的标准是DeviceNet,这是为PLC和智能传感器设计的。在汽车工业,许多制造商都应用他们自己的标准。

概述

CAN is Controller Area Network。1983年,Bosch博世提出,1986年正式发布。差分、多主、带仲裁的串行总线,抗干扰强、可靠,广泛用于汽车、工业、无人机与机器人。

物理层

信号 说明
CANH / CANL 差分对
GND 公共地(建议)
  • 采用双绞线传输,总线两端各接 120Ω 终端电阻(高速 CAN)。
  • 显性(Dominant,逻辑 0)与隐性(Recessive,逻辑 1),显性优先。

协议特点

特性 说明
多主 任意节点可主动发送
非破坏性仲裁 总线冲突时 ID 小者优先(显性覆盖)
报文 ID 标准帧 11 位 / 扩展帧 29 位
速率 经典 CAN ≤1Mbps;CAN FD 数据段更快
错误处理 错误帧、错误计数、自动重发、总线关闭

帧类型

帧 用途
数据帧 传输数据
远程帧 请求数据(少用)
错误帧 错误报告
过载帧 流控

速率与距离

速率 最大总线长度(参考)
1 Mbps 40 m
500 kbps 100 m
250 kbps 250 m
125 kbps 500 m