介绍
CAN 代表控制器局域网络。它由罗伯特·博世于 1986 年开发,是一种灵活、可靠且强大的汽车内部通信解决方案。它是一种串行、半双工和异步通信协议,遵循分散式通信基础设施。分散式协议的好处是没有可以控制总线的中央实体,使节点可热插拔,即我们可以在总线上添加或删除节点,而不会中断其他节点之间的通信。
它具有高数据传输速度(高达 1 Mbps)、出色的错误处理、自动重新传输错误消息以及对电气噪声的高容忍度。它标准化了物理层和数据链路层,即 OSI 模型的最低层。让我们首先讨论 CAN 协议的物理层。
物理层
物理层与通过物理介质传输原始比特流有关。CAN 总线的物理层有多种规范,下面提到其中一些:
- 高速 CAN(ISO 11898-2)
- 低速 CAN(ISO 11898-3)
- 单线 CAN(SAE J2411)
本教程将重点介绍高速 CAN(ISO 11898-2)。它使用两根线进行通信:CANH(CAN High)和 CANL(CAN Low)。这些线是双绞线,两端均有 120 Ω 终端电阻,可防止总线上的信号反射,并且这些线没有接地屏蔽。通常,在汽车中,总线上的节点由同一电源供电,并具有相同的地电位。否则,使用接地线为总线上的节点设置公共接地。
该图简要介绍了 CAN 总线的硬件接口,它可能看起来与任何其他协议一样。然而,就其电气特性而言,它利用差分模式信号而不是数字信号进行数据传输。要了解 CAN 为何使用差分信号模式,我们首先需要讨论单端信号(数字信号)因电磁干扰而面临的挑战。
假设一条传输数字信号的线路受到噪声源的干扰,导致线路上出现电压尖峰。接收器通过监控线路上的电压水平来接收数据,并将电压尖峰视为“1”,从而破坏比特流。
上图显示了理想的比特流应该是“00011000”,但由于电压尖峰,接收器读取“01011011”并收到损坏的数据。实际上,可以使用某些方法过滤电压尖峰,但这是有代价的!相反,CAN 协议使用差分信号几乎免费处理这些问题。
在差分模式信号中