它代表的是控制器区域网络,而不是车辆区域网络。
它是一种简单且高度可靠的网络,广泛应用于汽车、工业设备等领域。
| 年 | 历史 |
| 1986 | 博世是第一个正式发布CAN 协议的公司,不久之后,飞利浦(现为恩智浦半导体)成为首批发布集成 CAN 控制器的 MCU 的半导体制造商之一。 |
| 1993 | 国际标准化组织(ISO)将CAN标准化为ISO 11898。此后,它被拆分为三个标准: ISO 11898-1 描述了该协议的数据链路层。 - ISO 11898-2 描述了高速 CAN 的物理层(最大波特率为 1Mbps) ISO 11898-3 是后来发布的,涵盖了低速 CAN(最大波特率为 125kbps)的 CAN 物理层,也称为容错 CAN。 |
| 2012 | 博世发布了CAN FD 1.0(具有灵活数据速率的 CAN),这是一个支持更高数据速率的升级标准。 |
| 2018 | CAN XL (加长型 CAN)问世,可实现更高的数据速率和数据长度。 |
| 物品 | (经典)CAN | CAN FD | 加拿大 XL |
| 出现年份 | 1986 | 2012 | 2018 |
| 最大数据长度 | 8 字节 | 64 字节 | 2048 字节 |
| 最大传动速度 | 1 Mbps | 5-8 Mbps | 10-20 Mbps |
| 帧格式 | 标准帧:11 位 ID | 标准帧:11 位 ID 扩展帧:29 位 ID |
标准帧:11 位 ID |
| 兼容性 | - | 向下兼容 CAN | 向下兼容 CAN FD |
*CAN XL的数据长度增加到2048字节,提高了与以太网(最大1500字节)的兼容性。例如,在进行以太网到CAN XL或CAN XL到以太网的协议转换时,可以在一个帧内完成封装。
使用以太网到 CAN FD 时,需要将数据切成 64 字节的块来创建帧。
Keita_Nagashima_0-1746181380046.png
当数据大小不超过 16 字节时:
Keita_Nagashima_0-1747110508669.png
如果数据大小为 20 到 64 字节:
Keita_Nagashima_1-1747110532063.png
| 场地 | 解释 |
| SOF(帧起始) | 发送一个占主导地位的“0”来通知其他ECU即将收到消息。 |
|
仲裁 ID(基础 ID) (以下简称“ID”) |
识别消息和优先级。标准 CAN (CAN 2.0A) 帧具有 11 位 ID,而扩展 CAN (CAN 2.0B) 帧具有 29 位 ID。 |
| RRS(远程发送请求) |
作为远程请求替换,主导值固定为“0”。 |
| 集成开发环境 |
指示这是标准格式帧(11 位标识符)还是扩展格式帧(29 位标识符)。 |
| 联邦国防军 |
它被称为灵活数据格式 (FDF) 位,用于指示帧是经典 CAN 还是 CAN FD。 主导“0”:CAN 隐性“1”:CAN FD |
| 余 | 保留位。固定为显性“0”。 |
| 布里斯托尔 | 比特率切换。在 BRS 比特采样点切换到更快的比特率。* 调整采样点时必须小心。 |
| 电离层 | 错误状态指示器。指示发送节点的错误状态。占主导地位的“0”表示错误激活。 |
| DLC(数据长度代码) | 以字节为单位存储数据长度(0 到 64 字节) |
| 数据 | 包含实际数据值,其长度由 DLC 字段决定。 |
| 物品数量 | CAN FD 中添加了一个 4 位区域。从 SOF 到数据字段包含的填充位总数除以 8 所得的余数存储为一个 3 位格雷码值。第 4 位存储偶校验位。 |
|
CRC(循环冗余校验) |
用于检查数据完整性的错误检测代码。 |
| CRC分隔符 | 必须是隐性“1”。 |
| ACK(确认时隙) | 验证 CRC 校验过程是否正确。 |
| ACK 分隔符 | 必须是隐性“1”。 |
| 帧结束 (EOF) | 7 位。帧结束用隐式“1”表示。 |
以下是CAN总线的五个典型特征。
Keita_Nagashima_0-1746775179235.png
・CAN总线发送和接收数字数据“0”和“1”。
・“0”称为“显性”, “1”称为“隐性” 。
Keita_Nagashima_2-1746182323802.png
多个节点可能同时开始传输,在这种情况下,优先级较高的消息会优先“赢得”总线访问权限。
・如果设备 A(ID = 110 0 1000111 (0x647))和设备 B(ID = 110 1 1111111 (0x6FF))同时发送消息(如下图所示),由于设备 A 的 ID 较小,因此它会继续发送消息。设备 B 将等待总线空闲后再重新发送。
Keita_Nagashima_0-1746688656240.png
总线上的所有节点都可以发送和接收消息,并且始终监听待广播的消息。任何节点发送的消息都会被广播。
每个节点中的 CAN 控制器可以实现一个过滤器,该过滤器检查广播消息的 ID,如果 ID 在一定范围内则接受该消息,忽略超出该范围的消息。
在下面的示例中,节点 1 发送一条包含当前车辆速度的消息。该消息的ID为0x121 ,因此
- 节点 2 接受ID 范围为 0x100 到 0x1FF 的数据。
- 节点 3接受 ID 在 0x320 到 0x352 范围内的数据,但此消息的 ID 超出了此范围,因此它忽略了该数据。
Keita_Nagashima_0-1746692882498.png
在汽车或工业系统等容不得故障的系统中,可靠性至关重要。为了提高可靠性,系统采用了广泛的错误检测技术,包括在消息级别和比特级别进行错误检查。如果在任一级别检测到错误,则消息不被接受,接收节点会生成一个错误帧。
在消息级别,有CRC 校验(当接收节点计算出的 CRC 值与发送帧中包含的 CRC 值不匹配时,就会发生 CRC 错误)和格式校验(由于 SOF、EOF、ACK 定界符和 CRC 定界符位的逻辑是固定的,如果检测到相反的逻辑,就会发生错误)。
在比特级别,发送节点接收自身发送的消息,并逐位监控(比特监控)。如果读取到的比特与总线上发送的数据比特相反,则会产生错误。
此外,还有一种称为“位填充规则”的机制,如果连续出现五个逻辑电平相同的位,则会插入一个填充位(一个与这五个连续位状态相反的位)。这确保了帧边缘保持网络同步。填充帧由接收节点进行解填充。位填充适用于帧中的所有字段,但 CRC 分隔符、ACK 字段和 EOF 除外。连续出现六个极性相同的位会违反位填充规则,因此被视为错误。
综上所述,CAN 总线在汽车和工业应用中具有诸多优势。
成本更低——每个ECU节点都可以通过单个CAN接口进行通信,从而减少布线量、重量和成本。
坚固耐用——CAN高速总线具有很强的抗电磁干扰能力,其差分信号传输方式使其具有极强的抗噪声能力。部分CAN控制器和接收器提供工业级和扩展温度范围的产品。
优先级– 帧开头包含的仲裁 ID 决定了优先级,有助于避免消息之间的冲突。
过滤器——网络上的每个节点都可以接收和发送消息,并确定消息是否合适或应该忽略。
错误检测——CAN 规范包含内置的错误处理机制,每个节点都会检查传输错误,从而提高可靠性。
・CAN 是一种已应用多年的网络,而恩智浦半导体是一家历史悠久的 CAN 公司。恩智浦半导体提供各种 CAN 解决方案,包括集成 CAN 控制器的微控制器和处理器、 CAN 收发器、系统基础芯片,以及配套的开发工具、软件、各种文档和技术支持。
要开始使用 CAN,请使用S32 Design Studio IDE 、 MCUXpresso IDE和基于模型的设计工具箱 (MBDT)中包含的示例。
・点击此处查看有关实际运行 CAN 的文章。
1. 使用环回测试验证 CAN 总线功能。一块 FRDM 板即可满足测试需求。
2. 执行 CAN 通信,并获取和解析 CANFD 帧。*测试需要两块 FRDM 板。
=========================
我们目前无法回复此帖子“评论”部分的评论。
对于由此造成的不便,我们深表歉意。如有任何疑问,请参阅“ NXP技术问题-如何联系我们(日语博客) ”。
(如果您已经是恩智浦的分销商或与恩智浦有合作关系,您可以直接询问负责人。)
本节介绍 CAN 总线/协议的概述和特点。
恩智浦半导体长期以来一直参与 CAN 总线技术,并提供各种 CAN 产品,包括微控制器、处理器和收发器。