CAN(控制器局域网)介绍


前言

本文介绍控制器局域网(CAN)串行通信总线,详细介绍报文帧、总线仲裁和信号。

什么是 CAN?

控制器局域网(CAN)是一种串行通信总线,专为在恶劣环境下,特别是在工业和汽车应用中实现稳健灵活的性能而设计。

CAN 最初由博世发明,后来被编入 ISO11898-1 标准,它定义了开放系统互连 (OSI) 模型的数据链路层和物理层,为高速车载通信提供了底层网络解决方案。特别是,CAN 的开发是为了减少电缆布线,使车内独立的电子控制单元 (ECU) 只需一对单线即可进行通信。图 1 显示了连接 CAN 总线的汽车 ECU。
在这里插入图片描述
车载诊断系统(OBD)是车辆的诊断和报告系统,它允许您或技术人员通过诊断故障代码(DTC)排除故障。当 "检查发动机 "指示灯亮起时,技术人员通常会使用手持设备读取车辆的发动机代码。在最底层,这些数据通过信号协议传输,在大多数情况下是 CAN。

DeviceNet 是一种用于工业应用的高级网络协议。它大大减少了控制系统与 I/O 设备之间所需的布线。无需将每个设备连接到 PLC I/O 模块上的单独输入/输出端,而是通过一个四线连接器将设备连接起来,并连接到 PLC 上的网络扫描器。在最底层,我们发现 CAN 在 DeviceNet 协议中发挥着神奇的作用。图 2 显示了一个 PLC 正在扫描通过 DeviceNet 通信的工业设备网络。

在这里插入图片描述

CAN 报文帧

那么 CAN 报文究竟是什么样的呢?最初的 ISO 标准制定了所谓的标准 CAN。标准 CAN 对不同报文使用 11 位标识符,总共有 211 个(即 2048 个)不同的报文标识符。后来对 CAN 进行了修改,将标识符扩展到 29 位,从而得到 229 个标识符。这就是扩展 CAN。CAN 使用多主总线,所有报文都在整个网络上广播。标识符为仲裁提供了报文优先级。

CAN 使用具有两种逻辑状态的差分信号,分别称为隐性和显性。隐性表示差分电压小于最小阈值电压。显性表示差分电压大于最小阈值电压。有趣的是,显性状态是通过在总线上驱动逻辑 "0 "来实现的,而隐性状态则是通过逻辑 "1 "来实现的。这与大多数系统中使用的传统 "高 "和 "低 "状态截然相反。本文稍后将详细介绍这两种状态。重要的是,在仲裁过程中,显性状态优先于隐性状态。

标准 CAN

标准 CAN 报文帧由多个比特字段组成。如图 3 所示。
在这里插入图片描述

第一位是帧开始位(SOF)。这个主位代表 CAN 报文的开始。接下来是 11 位标识符,它确定 CAN 报文的优先级。标识符越小,报文的优先级越高。

远程传输请求(RTR)位通常是显性的,但当一个节点向另一个节点请求数据时,它就会变为隐性。当发送的是标准 CAN 帧而不是扩展帧时,标识符扩展(IDE)位占主导地位。r0 位为保留位,目前未使用。数据长度代码(DLC)位表示该报文中有多少字节的数据。

接下来是数据本身,其字节数与 DLC 位所代表的字节数相同。循环冗余校验(CRC)是一个 16 位的校验和,用于检测传输数据中的错误。如果信息接收正确,接收节点会用一个显性位覆盖隐性确认位(ACK)。ACK 还包含一个分隔位,以保持同步。帧结束位(EOF)表示 CAN 报文的结束,宽度为 7 位,用于检测位塞满错误。CAN 报文的最后一部分是帧间空间(IFS),用作时间延迟。该时间延迟正是 CAN 控制器将接收到的报文移入缓冲区进行进一步处理所需的时间。

标准 CAN

扩展 CAN 使用 29 位标识符和几个附加位。扩展报文在 11 位标识符之后有一个替代远程请求(SRR)位,作为占位符,以保持与标准 CAN 相同的结构。此时,标识符扩展(IDE)应该是隐性的,表示扩展标识符在其后。RTR 位在 18 位标识符之后,其后是第二个保留位 r1。报文的其他部分保持不变。

在这里插入图片描述

CAN 报文类型

既然知道了 CAN 报文的样子,您可能想知道总线上传递的报文有哪些类型。CAN 允许四种不同的报文类型。它们是数据帧、远程帧、过载帧和错误帧。

标准 CAN 数据帧使用标识符、数据和数据长度代码、循环冗余校验和确认位。在数据帧中,RTR 和 IDE 位都是主要位。如果接收端的隐性确认位被显性位覆盖,发送器和接收器都会认为这是一次成功的传输。

CAN 远程帧与数据帧相似,只是不包含任何数据。发送时,RTR 位处于隐性状态;这表明它是一个远程帧。远程帧用于向节点请求数据。

当节点检测到 CAN 总线上的报文出错时,就会发送错误帧。这将导致所有其他节点发送错误帧。随后,发生错误的节点重新传输报文。过载帧的工作原理类似,但用于节点接收帧的速度超过其处理速度的情况。该帧提供了一个缓冲时间,以便节点能够赶上。

总线仲裁和信号

CAN 是一种 CSMA/CD 协议,这意味着总线上的每个节点都能检测到碰撞,并在尝试重新传输之前后退一定时间。碰撞检测是通过基于报文标识符的优先级仲裁来实现的。在讨论仲裁之前,让我们先仔细了解一下 CAN 总线上使用的显性位和隐性位。

反转逻辑

CAN 总线的一个有趣之处在于,它使用了一种具有显性和隐性两种状态的反转逻辑形式。下图 5 显示了 CAN 收发器输出和输入的简化版本。101 "比特流来自/前往 CAN 控制器和/或微控制器。请注意,当控制器发送比特流时,这些比特流会被补码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值