1. 数据帧(Data Frame)
数据帧是 CAN 总线中最常用的帧类型,用于传输实际的数据。其结构如下:
- 起始位(Start of Frame, SOF):标志帧的开始。
- 标识符(Identifier):用于表示消息的优先级和内容。
- 标准帧(11 位标识符)。
- 扩展帧(29 位标识符)。
- 控制位(Control Field):包含数据长度码(DLC),表示数据字段的字节数(0~8 字节)。
- 数据字段(Data Field):实际传输的数据,最多 8 字节。
- CRC 校验(Cyclic Redundancy Check):用于检测数据传输中的错误。
- 确认字段(ACK Field):接收节点确认是否正确接收到数据。
- 结束位(End of Frame, EOF):标志帧的结束。
2. 远程帧(Remote Frame)
远程帧用于请求发送数据帧,其结构与数据帧类似,但没有数据字段。特点如下:
- 标识符:与对应数据帧的标识符相同,用于请求指定标识符的数据。
- 数据字段为空:远程帧不携带实际数据。
远程帧通常由接收节点发送,用于请求发送方发送数据帧。
3. 错误帧(Error Frame)
错误帧用于检测总线上的错误,并通知所有节点。其结构如下:
- 错误标志(Error Flag):
- 主动错误标志:由主动错误节点发送,包含 6 个显性位。
- 被动错误标志:由被动错误节点发送,包含 6 个隐性位。
- 错误分隔符(Error Delimiter):用于标志错误帧的结束。
错误帧由检测到错误的节点主动发送,确保数据一致性。
4. 过载帧(Overload Frame)
过载帧用于通知总线繁忙或节点无法处理更多数据。其结构包括:
- 过载标志(Overload Flag):6 个显性位。
- 过载分隔符(Overload Delimiter):用于标志过载帧的结束。
过载帧通常用于延迟下一帧的传输。
5. 帧格式分类
根据标识符的长度,CAN 帧还可以分为:
- 标准帧(Standard Frame):11 位标识符。
- 扩展帧(Extended Frame):29 位标识符。
总结
帧类型 | 用途 | 是否携带数据 |
---|---|---|
数据帧 | 传输实际数据 | 是 |
远程帧 | 请求发送数据帧 | 否 |
错误帧 | 通知总线错误 | 否 |
过载帧 | 延迟传输,避免总线过载 | 否 |
每种帧格式在 CAN 总线通信中都有特定的作用,确保总线的高效性和可靠性。