CAN基础知识

CAN 是目前应用非常广泛的现场总线之一,主要应用于汽车电子和工
业领域,尤其是汽车领域,汽车上大量的传感器与模块都是通过 CAN 总线连接起来的。

什么是CAN?

CAN 是控制器局域网络, 是 ISO 国际标准化的串行通信协议

CAN 总线最初是博世公司为了解决现代汽车中庞大的电子控制系
统之间的通讯,减少不断增加的信号线,设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。

CAN 是一种多主方式的串行通讯总线,CAN 的高性能、高可靠性以及高实时性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。

以汽车电子为例,汽车上有空调、车门、发动机、大量传感器等,这些部件、模块都是通过 CAN 总线连在一起形成一个网络,车载网络构想图如下所示:
在这里插入图片描述

CAN总线最多可接多少个设备?

CAN总线最多支持挂接的设备是110个。这个数字是基于理论条件下对CAN总线的分析得出的。在实际应用中,能够挂载的设备数量受到多种因素的影响,包括但不限于以下几点:
总线长度:较长的总线可能会导致信号衰减和传输延迟,从而限制了可挂载设备的数量。
数据传输速率:较高的数据传输速率可能会限制可挂载设备的数量,因为更多的设备将会增加总线上的数据冲突和竞争。
物理因素:例如电缆质量、连接器质量等都会对总线的性能产生影响。

CAN的特点

CAN 通信协议具有以下特点:
(1)、多主控制
在总线空闲时,所有的单元都可开始发送消息(多主控制)。
最先访问总线的单元可获得发送权(CSMA/CA 方式*1)。
多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权

(2)、消息的发送
在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级
ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息 ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。

(3)、系统的柔软性
与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。

(4)、通信速度
根据整个网络的规模,可设定适合的通信速度。
同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度

(5)、远程数据请求
可通过发送“遥控帧” 请求其他单元发送数据。

(6)、具有错误检测功能·错误通知功能·错误恢复功能
所有的单元都可以检测错误(错误检测功能)。
检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。
正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

(7)、故障封闭
CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

(8)、连接
CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

CAN的电气属性

CAN 总线使用两根线来连接各个单元: CAN_HCAN_L, CAN 控制器通过判断这两根线上的电位差来得到总线电平, CAN 总线电平分为显性电平隐性电平两种。显性电平表示逻辑“0”,此时 CAN_H 电平比 CAN_L 高,分别为 3.5V 和 1.5V,电位差为 2V。隐形电平表示逻辑“1”,此时 CAN_H 和 CAN_L 电压都为 2.5V 左右,电位差为 0V。
CAN 总线就通过显性和隐形电平的变化来将具体的数据发送出去,如下
图所示:
在这里插入图片描述
CAN 总线上没有节点传输数据的时候一直处于隐性状态,也就是说总线空闲状态的时候一直处于隐性。

CAN网络拓扑

CAN 是一种分布式的控制总线, CAN 总线作为一种控制器局域网,和普通的以太网一样,它的网络由很多的 CAN 节点构成, 其网络拓扑结构如下图所示:
在这里插入图片描述
CAN 网络的每个节点非常简单,均由一个 MCU(微控制器)、一个 CAN 控制器和一个 CAN 收发器构成, 然后通过 CAN_H 和 CAN_L 这两根线连接在一起形成一个 CAN 局域网络。
CAN 能够使用多种物理介质,例如双绞线、光纤等。最常用的就是双绞线。信号使用差分电压传送,两条信号线被称为“CAN_H”和“CAN_L” ,在开发板上, CAN 接口使用了这两条信号线, CAN 接口也只有这两条信号线。

由此可知, CAN 控制器局域网和普通的以太网一样,每一个 CAN 节点就相当于局域网络中的一台主机。

途中所有的 CAN 节点单元都采用 CAN_H 和 CAN_L 这两根线连接在一起, CAN_H 接 CAN_H、CAN_L接 CAN_L, CAN 总线两端要各接一个 120Ω的端接电阻,用于匹配总线阻抗,吸收信号反射及回拨,提高数据通信的抗干扰能力以及可靠性。

CAN 总线传输速度可达 1Mbps/S,最新的 CAN-FD 最高速度可达5Mbps/S,甚至更高。 CAN 传输速度和总线距离有关,总线距离越短,传输速度越快。

CAN总线通信模型

CAN 传输协议参考了 OSI 七层模型,但是实际上 CAN 协议只定义了“传输层” 、 “数据链路层”以及“物理层”这三层,而应用层协议可以由 CAN 用户定义成适合特别工业领域的任何方案。
在这里插入图片描述
CAN 协议只参考了 OSI 模型中的“传输层” 、 “数据链路层”以及“物理层”, 因此出现了各种不同的应用层协议,比如用在自动化技术的现场总线标准 DeviceNet,用于工业控制的 CanOpen,用于乘用车的诊断协议 OBDUDS(统一诊断服务, ISO14229),用于商用车的 CAN 总线协议 SAEJ1939
数据链路层分为 MAC 子层和 LLC 子层, MAC 子层是 CAN 协议的核心部分。数据链路层的功能是将物理层收到的信号组织成有意义的消息,并提供传送错误控制等传输控制的流程。具体地说,就是消息的帧化、仲裁、应答、错误的检测或报告。数据链路层的功能通常在 CAN 控制器的硬件中执行。
在物理层定义了信号实际的发送方式、位时序、位的编码方式及同步的步骤。但具体地说,信号电平、通信速度、采样点、驱动器和总线的电气特性、连接器的形态等均未定义。这些必须由用户根据系统需求自行确定。

CAN帧的种类

CAN 通信协议定义了 5 种类型的报文帧,分别是:数据帧、遥控帧、错误帧、过载帧、间隔帧。 通信是通过这 5 种类型的帧进行的。 其中数据帧和遥控帧有标准格式和扩展格式两种,标准格式有 11 位标识符(ID),扩展格式有 29 个标识符(ID)。这 5 种类型的帧如下表所示:
在这里插入图片描述
其中数据帧是使用最多的帧类型,这里重点介绍一下数据帧,数据帧结构如下图所示:
在这里插入图片描述
图 给出了数据帧标准格式和扩展格式两种帧结构,图中 D 表示显性电平 0、 R 表示隐性电平 1,D/R 表示显性或隐性,也就是 0 或 1,我们来简单分析一下数据帧的这 7 个段。
数据帧由 7 个段构成:
(1)、帧起始
表示数据帧开始的段。
(2)、 仲裁段
表示该帧优先级的段。
(3)、控制段
表示数据的字节数及保留位的段。
(4)、数据段
数据的内容,可发送 0~8 个字节的数据。
(5)、 CRC 段
检查帧的传输错误的段。
(6)、 ACK 段
表示确认正常接收的段。
(7)、帧结束
表示数据帧结束的段。

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值