串行通信协议 CAN 和 LIN

串行通信协议 CAN 和 LIN

我们将一起研究流行的 CAN 和 LIN 协议。本文是串行通信协议系列的一部分。我们希望在下次您发现自己将串行通信总线作为设计的一部分时,该资源将被证明是无价的。我们旨在帮助您选择适合您情况的最佳选择。

CAN总线

CAN代表Controller Area Network,是各种电子设备使用的通信协议。CAN 通常用于提供车辆中设备之间的通信,例如发动机管理系统、主动悬架、ABS、换档控制、照明控制、空调、安全气囊、中控锁系统以及车辆中的其他系统。

CAN 是一种高完整性串行数据通信总线,非常适合实时应用。该总线可以以高达 1 Mbps 的数据速率运行,并具有出色的错误检测和纠正能力。CAN 由 Bosh 开发,主要用于汽车应用,但现在也用于许多工业自动化和控制应用。

CAN 是一种多主、基于消息的协议。这意味着所有 CAN 设备都可以传输数据,并且多个 CAN 设备可以同时请求使用总线。CAN 网络没有寻址系统,而是使用优先级消息系统。所有消息都分为一系列优先级。

目前使用的 CAN 总线有多种版本,其中包括:

CAN 2.0A – 使用 11 位消息标识符

CAN 2.0B - 使用 29 位消息标识符

CAN FD - 使用灵活的数据速率

在CAN 总线中,发送设备向所有 CAN 节点发送消息,每个节点决定如何对接收到的消息做出反应。此外,如果同时发送多条消息,节点将确定每条消息的优先级。

简化的消息流程图

CAN 总线有三种不同的速度类型,它们是:

低速 - 125 kbps 数据速率和 500 米最大总线长度

高速(或高速)- 1 Mbps 数据速率和 40 米最大总线长度

灵活的数据速率 - 15 Mbps 数据速率和 10 米最大总线长度

CAN 总线使用差分传输线,因此不需要接地连接。差分线路的每一端都使用 120 Ω 端接电阻器,如下面的电路图所示。

末端为 120 Ω 终端电阻的简单 CAN 接线示例

差分对传输线更加稳健并且不受环境干扰和噪声的影响。这是因为两条信号线保持非常接近,所以当电磁干扰影响一条传输线时,它也会同样影响另一条传输线。因为差分对中没有参考地,所以 CAN 总线电压是根据成对差分传输线之间的差异来测量的。

影响两条差分对线的电磁干扰

在CAN差分传输线中,显性逻辑电平为低或0,而隐性逻辑电平为高或1。

以下是标准 11 位消息的完整 CAN 协议帧:

CAN数据报文帧

消息以起始帧开始,指示消息的开始。通常,CAN 总线会处于空闲状态(1),因此为了识别报文的开始,发送显性 0 信号,它胜过隐性 1。

其后是仲裁字段,指示数据的优先级。发送器在开始发送消息时识别消息优先级。如果多个发送器同时发送消息,当检测到它们正在发送隐性逻辑电平 1 但总线上的实际仲裁字段位是显性电平 0 时,它们会检测到这一点。这告诉受影响的发送器延迟发送,因为它不是最高优先级。这一直持续到只剩下一个发送器来发送它的消息。发送此消息后,其他较低优先级的发送器将重新启动该过程。如此重复,直到所有消息按优先级顺序发送完毕,如下所示:

CAN报文优先竞争

下一位是远程传输请求。该位显示消息帧的格式。可以是Data Frame,发送端发送信息时使用,设置为显性逻辑0表示。或者,也可以是Remote Frame,发送端请求信息,设置为隐性表示逻辑 1。

下一位是 ID 扩展名。如果将 ID 扩展设置为显性逻辑 0,则仲裁字段的长度将是标准的 11 位,对于 2048 种不同的标识来说足够了。如果该位设置为隐性级别 1,则仲裁字段的长度将扩展 29 位,这对于 536870912 种不同的标识来说已经足够了。ID 扩展位之后的仲裁字段的附加 18 位。

下一位保留,通常设置为显性逻辑电平 0,但设置为隐性逻辑电平 1 将不起作用。

接下来的四位是数据长度代码位,它显示数据字段中有多少位。数据长度可以从 1 到 8 个字节不等,相当于 8 到 64 位。

接下来的 15 位是用于错误检测的CRC(循环冗余校验)字段。

下一位是 CRC 定界符,它必须设置为隐性逻辑 1。

下一位是确认槽位。发送器将此设置为隐性逻辑电平 1。如果成功接收到消息,接收器通过覆盖该位并将其分配给显性逻辑电平 0 来指示这一点。

下一位是确认定界符,它必须设置为隐性逻辑 1。

最后七位是帧结束指示,它标识消息已经结束。

标准 OBD2 汽车连接器包括用于诊断或软件控制目的的 CAN 总线差分对引脚:

LIN总线

LIN 代表本地互连网络,是一种主要用于类似于 CAN 的车辆的电子通信协议。LIN 协议的出现是因为当汽车中的每个设备都需要通过总线进行通信时,使用 CAN 协议的总线变得过于昂贵。正因为如此,欧洲汽车制造商开始使用不同的串行通信系统,这导致了兼容性问题。
在火山汽车集团和摩托罗拉的帮助下,LIN 由五家汽车制造商创建:宝马、大众集团、奥迪、沃尔沃汽车和梅赛德斯-奔驰。
LIN 通信网络是一种主从安排。通常,LIN 总线由 16 个节点(1 个主站和 15 个从站)组成。所有 LIN 总线消息均由单个主设备发起。同时,只有一个从站可以随时响应使用主站发送的标识符选择的消息。

使用可变长度的固定格式消息在连接到 LIN 总线的设备之间传输数据。主设备发送一个中断信号,然后是同步和标识符字段以启动数据传输。从设备可以通过发送包含 2、4 或 8 个字节的数据加上 3 个字节的控制信息的数据帧进行回复。
LIN 可用作连接到 CAN 总线的子总线。CAN 总线向其节点之一发送信号,该节点本身可以是 LIN 主机。当 LIN 物理层发送器接收到消息时,它会使用 CAN 电池电压电平(通常为 12 V)将其在逻辑电平上转换为 LIN 协议。LIN 发射器还包括一个限流整形驱动器,可减少电磁辐射。

LIN 和 CAN 总线集成

LIN 从接收器然后将来自 LIN 总线的高电池电平电压数据转换为可以发送到微控制器的低电压电平逻辑信号。
LIN 作为串行广播系统运行,使用带接地参考的单线总线。与 CAN 或其他串行通信协议 (<20 kbps) 相比,典型的 LIN 总线速度相对较低。然而,实现 LIN 总线的成本显着降低,使其成为批量生产的理想选择。它主要用于不太重要的非安全功能。LIN 常用于控制车窗、空调、雨刷器等。LIN 总线的最大长度为 40 米。

在 LIN 总线上,信号可以是显性(逻辑电平低或 0)或隐性(逻辑电平高或 1)。

LIN 协议使用遵循以下六种帧类型之一的消息帧结构:

无条件帧——这是所有订阅者(从站)接收的消息帧(假设没有检测到错误)

事件触发帧 - 此消息帧提高了 LIN 集群(LIN 集群 - 一个 LIN 数据总线)的响应能力,而无需使用过多的总线带宽

零星帧 - 当需要防止与其他消息冲突时传输此消息帧

诊断帧 - 此消息帧携带诊断或配置数据,并始终包含八位

用户自定义帧——这个消息帧可以携带任何类型的信息

保留帧 – 此消息帧保留用于确认 LIN 网络,不应在 LIN 2.0 中使用

LIN 总线数据帧示例

LIN 总线因其标准协议、简单性和低成本在过去十年中变得非常流行,到 2020 年将有超过 6 亿个 LIN 节点安装在汽车中。

LIN 现在还用于非汽车行业的应用,例如家用电器和工业自动化。

本文研究了流行的 CAN 和 LIN 协议的一些特性,并讨论了它们的一些优点和实现细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值