24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 串行通信协议 CAN 和 ...
技术专题
串行通信协议 CAN 和 LIN
串行通信协议 CAN 和 LIN
我们将一起研究流行的 CAN 和 LIN 协议。本文(wén)是串行通信协议系列的一部分(fēn)。我们希望在下次您发现自己将串行通信总線(xiàn)作為(wèi)设计的一部分(fēn)时,该资源将被证明是无价的。我们旨在帮助您选择适合您情况的最佳选择。
CAN总線(xiàn)
CAN代表Controller Area Network,是各种電(diàn)子设备使用(yòng)的通信协议。CAN 通常用(yòng)于提供車(chē)辆中设备之间的通信,例如发动机管理(lǐ)系统、主动悬架、ABS、换档控制、照明控制、空调、安全气囊、中控锁系统以及車(chē)辆中的其他(tā)系统。
CAN 是一种高完整性串行数据通信总線(xiàn),非常适合实时应用(yòng)。该总線(xiàn)可(kě)以以高达 1 Mbps 的数据速率运行,并具有(yǒu)出色的错误检测和纠正能(néng)力。CAN 由 Bosh 开发,主要用(yòng)于汽車(chē)应用(yòng),但现在也用(yòng)于许多(duō)工业自动化和控制应用(yòng)。
CAN 是一种多(duō)主、基于消息的协议。这意味着所有(yǒu) CAN 设备都可(kě)以传输数据,并且多(duō)个 CAN 设备可(kě)以同时请求使用(yòng)总線(xiàn)。CAN 网络没有(yǒu)寻址系统,而是使用(yòng)优先级消息系统。所有(yǒu)消息都分(fēn)為(wèi)一系列优先级。
目前使用(yòng)的 CAN 总線(xiàn)有(yǒu)多(duō)种版本,其中包括:
CAN 2.0A – 使用(yòng) 11 位消息标识符
CAN 2.0B - 使用(yòng) 29 位消息标识符
CAN FD - 使用(yòng)灵活的数据速率
在CAN 总線(xiàn)中,发送设备向所有(yǒu) CAN 节点发送消息,每个节点决定如何对接收到的消息做出反应。此外,如果同时发送多(duō)条消息,节点将确定每条消息的优先级。
简化的消息流程图
CAN 总線(xiàn)有(yǒu)三种不同的速度类型,它们是:
低速 - 125 kbps 数据速率和 500 米最大总線(xiàn)長(cháng)度
高速(或高速)- 1 Mbps 数据速率和 40 米最大总線(xiàn)長(cháng)度
灵活的数据速率 - 15 Mbps 数据速率和 10 米最大总線(xiàn)長(cháng)度
CAN 总線(xiàn)使用(yòng)差分(fēn)传输線(xiàn),因此不需要接地连接。差分(fēn)線(xiàn)路的每一端都使用(yòng) 120 Ω 端接電(diàn)阻器,如下面的電(diàn)路图所示。
末端為(wèi) 120 Ω 终端電(diàn)阻的简单 CAN 接線(xiàn)示例
差分(fēn)对传输線(xiàn)更加稳健并且不受环境干扰和噪声的影响。这是因為(wèi)两条信号線(xiàn)保持非常接近,所以当電(diàn)磁干扰影响一条传输線(xiàn)时,它也会同样影响另一条传输線(xiàn)。因為(wèi)差分(fēn)对中没有(yǒu)参考地,所以 CAN 总線(xiàn)電(diàn)压是根据成对差分(fēn)传输線(xiàn)之间的差异来测量的。
影响两条差分(fēn)对線(xiàn)的電(diàn)磁干扰
在CAN差分(fēn)传输線(xiàn)中,显性逻辑電(diàn)平為(wèi)低或0,而隐性逻辑電(diàn)平為(wèi)高或1。
以下是标准 11 位消息的完整 CAN 协议帧:
CAN数据报文(wén)帧
消息以起始帧开始,指示消息的开始。通常,CAN 总線(xiàn)会处于空闲状态(1),因此為(wèi)了识别报文(wén)的开始,发送显性 0 信号,它胜过隐性 1。
其后是仲裁字段,指示数据的优先级。发送器在开始发送消息时识别消息优先级。如果多(duō)个发送器同时发送消息,当检测到它们正在发送隐性逻辑電(diàn)平 1 但总線(xiàn)上的实际仲裁字段位是显性電(diàn)平 0 时,它们会检测到这一点。这告诉受影响的发送器延迟发送,因為(wèi)它不是最高优先级。这一直持续到只剩下一个发送器来发送它的消息。发送此消息后,其他(tā)较低优先级的发送器将重新(xīn)启动该过程。如此重复,直到所有(yǒu)消息按优先级顺序发送完毕,如下所示:
CAN报文(wén)优先竞争
下一位是遠(yuǎn)程传输请求。该位显示消息帧的格式。可(kě)以是Data Frame,发送端发送信息时使用(yòng),设置為(wèi)显性逻辑0表示。或者,也可(kě)以是Remote Frame,发送端请求信息,设置為(wèi)隐性表示逻辑 1。
下一位是 ID 扩展名。如果将 ID 扩展设置為(wèi)显性逻辑 0,则仲裁字段的長(cháng)度将是标准的 11 位,对于 2048 种不同的标识来说足够了。如果该位设置為(wèi)隐性级别 1,则仲裁字段的長(cháng)度将扩展 29 位,这对于 536870912 种不同的标识来说已经足够了。ID 扩展位之后的仲裁字段的附加 18 位。
下一位保留,通常设置為(wèi)显性逻辑電(diàn)平 0,但设置為(wèi)隐性逻辑電(diàn)平 1 将不起作用(yòng)。
接下来的四位是数据長(cháng)度代码位,它显示数据字段中有(yǒu)多(duō)少位。数据長(cháng)度可(kě)以从 1 到 8 个字节不等,相当于 8 到 64 位。
接下来的 15 位是用(yòng)于错误检测的CRC(循环冗余校验)字段。
下一位是 CRC 定界符,它必须设置為(wèi)隐性逻辑 1。
下一位是确认槽位。发送器将此设置為(wèi)隐性逻辑電(diàn)平 1。如果成功接收到消息,接收器通过覆盖该位并将其分(fēn)配给显性逻辑電(diàn)平 0 来指示这一点。
下一位是确认定界符,它必须设置為(wèi)隐性逻辑 1。
最后七位是帧结束指示,它标识消息已经结束。
标准 OBD2 汽車(chē)连接器包括用(yòng)于诊断或软件控制目的的 CAN 总線(xiàn)差分(fēn)对引脚:
LIN总線(xiàn)
LIN 代表本地互连网络,是一种主要用(yòng)于类似于 CAN 的車(chē)辆的電(diàn)子通信协议。LIN 协议的出现是因為(wèi)当汽車(chē)中的每个设备都需要通过总線(xiàn)进行通信时,使用(yòng) CAN 协议的总線(xiàn)变得过于昂贵。正因為(wèi)如此,欧洲汽車(chē)制造商(shāng)开始使用(yòng)不同的串行通信系统,这导致了兼容性问题。
在火山(shān)汽車(chē)集团和摩托罗拉的帮助下,LIN 由五家汽車(chē)制造商(shāng)创建:宝马、大众集团、奥迪、沃尔沃汽車(chē)和梅赛德斯-奔驰。
LIN 通信网络是一种主从安排。通常,LIN 总線(xiàn)由 16 个节点(1 个主站和 15 个从站)组成。所有(yǒu) LIN 总線(xiàn)消息均由单个主设备发起。同时,只有(yǒu)一个从站可(kě)以随时响应使用(yòng)主站发送的标识符选择的消息。
使用(yòng)可(kě)变長(cháng)度的固定格式消息在连接到 LIN 总線(xiàn)的设备之间传输数据。主设备发送一个中断信号,然后是同步和标识符字段以启动数据传输。从设备可(kě)以通过发送包含 2、4 或 8 个字节的数据加上 3 个字节的控制信息的数据帧进行回复。
LIN 可(kě)用(yòng)作连接到 CAN 总線(xiàn)的子总線(xiàn)。CAN 总線(xiàn)向其节点之一发送信号,该节点本身可(kě)以是 LIN 主机。当 LIN 物(wù)理(lǐ)层发送器接收到消息时,它会使用(yòng) CAN 電(diàn)池電(diàn)压電(diàn)平(通常為(wèi) 12 V)将其在逻辑電(diàn)平上转换為(wèi) LIN 协议。LIN 发射器还包括一个限流整形驱动器,可(kě)减少電(diàn)磁辐射。
LIN 和 CAN 总線(xiàn)集成
LIN 从接收器然后将来自 LIN 总線(xiàn)的高電(diàn)池電(diàn)平電(diàn)压数据转换為(wèi)可(kě)以发送到微控制器的低電(diàn)压電(diàn)平逻辑信号。
LIN 作為(wèi)串行广播系统运行,使用(yòng)带接地参考的单線(xiàn)总線(xiàn)。与 CAN 或其他(tā)串行通信协议 (<20 kbps) 相比,典型的 LIN 总線(xiàn)速度相对较低。然而,实现 LIN 总線(xiàn)的成本显着降低,使其成為(wèi)批量生产的理(lǐ)想选择。它主要用(yòng)于不太重要的非安全功能(néng)。LIN 常用(yòng)于控制車(chē)窗、空调、雨刷器等。LIN 总線(xiàn)的最大長(cháng)度為(wèi) 40 米。
在 LIN 总線(xiàn)上,信号可(kě)以是显性(逻辑電(diàn)平低或 0)或隐性(逻辑電(diàn)平高或 1)。
LIN 协议使用(yòng)遵循以下六种帧类型之一的消息帧结构:
无条件帧——这是所有(yǒu)订阅者(从站)接收的消息帧(假设没有(yǒu)检测到错误)
事件触发帧 - 此消息帧提高了 LIN 集群(LIN 集群 - 一个 LIN 数据总線(xiàn))的响应能(néng)力,而无需使用(yòng)过多(duō)的总線(xiàn)带宽
零星帧 - 当需要防止与其他(tā)消息冲突时传输此消息帧
诊断帧 - 此消息帧携带诊断或配置数据,并始终包含八位
用(yòng)户自定义帧——这个消息帧可(kě)以携带任何类型的信息
保留帧 – 此消息帧保留用(yòng)于确认 LIN 网络,不应在 LIN 2.0 中使用(yòng)
LIN 总線(xiàn)数据帧示例
LIN 总線(xiàn)因其标准协议、简单性和低成本在过去十年中变得非常流行,到 2020 年将有(yǒu)超过 6 亿个 LIN 节点安装在汽車(chē)中。
LIN 现在还用(yòng)于非汽車(chē)行业的应用(yòng),例如家用(yòng)電(diàn)器和工业自动化。
本文(wén)研究了流行的 CAN 和 LIN 协议的一些特性,并讨论了它们的一些优点和实现细节。