深入解析 CAN 通信:接收、发送与中断处理
1. CAN 通信原理
CAN(Controller Area Network)是一种在汽车电子和工业自动化领域中广泛使用的高可靠性通信协议。本文将探讨 CAN 协议的接收与发送过程,包括中断处理和滤波设计的关键技术点。
1.1 CAN 通信的特点
- 多主通信:多个主节点可以在同一个网络上发送数据。
- 优先级:基于标识符的消息优先级机制确保紧急信息优先传输。
- 非破坏仲裁:网络上如果有多个节点同时发送消息,通过仲裁机制决定哪个节点控制总线。
1.2 CAN 通信的硬件基础
硬件上,CAN 通信需要 CAN 控制器和 CAN 收发器,它们共同实现了 CAN 协议的物理层和数据链路层功能。为了减少信号反射,网络通常会使用双绞线,并通过匹配电阻来终止网络。
1.3 CAN 通信的工作机制
在工作机制上,CAN 采用非破坏性的位仲裁技术,确保数据传输的稳定性和实时性。数据帧在传输过程中,若发生错误,节点将自动重发该帧。这种自我纠错的能力赋予了 CAN 通信在复杂环境下良好的性能表现。
1.4 CAN 通信的应用范围
由于 CAN 的高可靠性、实时性和灵活性,它已经成为工业控制、医疗设备、航空航天等多个领域不可或缺的通信标准。特别是在汽车领域,CAN 总线已经成为现代汽车电子系统的标准通信方式,广泛应用于引擎管理、刹车控制、车载娱乐系统等多个方面。
2. CAN 数据帧结构与解析
2.1 CAN 帧的基本结构
2.1.1 帧格式与类型
CAN 总线协议中定义了两种主要的帧格式:标准帧和扩展帧。标准帧使用 11 位标识符,而扩展帧使用 29 位标识符。这种设计允许开发者根据项目需求选择合适的帧类型,以优化网络通信的灵活性和效率。
- 标准帧:主要用于简单的网络系统,适用于节点数量较少的网络。
- 扩展帧:允许更多的节点通信,适用于复杂的系统设计。
2.1.2 帧起始位、控制位和数据位
一个 CAN 数据帧的开始由帧起始位(SOF)标志,这是帧的第一个位,并确保网络上的所有设备同步开始接收数据帧。接下来是控制位,其中包含标识符(ID),这个标识符定义了消息的优先级以及目的地。控制位之后是数据字段,数据长度可以变化,最短为 0 个字节,最长为 8 个字节。
数据字段之后是 CRC 序列,用于错误检测。循环冗余校验(CRC)确保了数据在传输过程中没有被损坏。CRC 后是 CRC 界定符,它由一个固定的位模式构成,用于标示 CRC 序列的结束。最后是帧结束位,标志着数据帧的结束。
2.1.3 帧结束位和帧间空间
帧结束位(EOF)是数据帧的最后一个字段,由 7 个连续的 1 位组成,确保了所有接收器能够识别数据帧的结束。帧间空间(IFS)是数据帧和随后帧之间的间隔。它允许网络上的设备有一个短暂的准备时间,用于处理当前接收到的数据帧,并准备接收下一个数据帧。
2.1.4 标准帧与扩展帧的比较
| 特征 | 标准帧 | 扩展帧 |
|---|---|---|
| 标识符位数 | 11 位 | 29 位 |
| 应用场景 | 小型系统、节点数量少 | 大型系统、节点数量多 |
| 优先级 | 较低 | 较高 |
| 数据长度 |

