CAN (Controller Area Network) 总线协议定义了以下几种帧类型,每种帧在通信中扮演不同的角色:
1. 数据帧 (Data Frame)
用于节点发送实际数据,是最常用的帧类型,包含以下部分:
- 帧起始(SOF, Start of Frame) - 1位显性位(0)
- 仲裁域:
- 标识符(11位或29位)
- RTR位(远程传输请求位,显性0表示数据帧)
- 控制域:
- IDE位(标识符扩展位)
- 保留位
- DLC(数据长度码,4位,表示数据字节数0-8)
- 数据域 - 实际传输的数据(0-8字节)
- CRC域 - 15位CRC校验 + 1位CRC界定符(隐性1)
- ACK域 - 应答槽(1位) + 应答界定符(1位隐性)
- 帧结束(EOF) - 7位隐性位(1)
2. 远程帧 (Remote Frame)
用于请求其他节点发送数据,结构与数据帧类似但:
- RTR位为隐性1
- 不包含数据域
- DLC表示请求的数据长度
3. 错误帧 (Error Frame)
用于错误通知,包含:
- 错误标志(6位显性或隐性位,取决于错误状态)
- 错误界定符(8位隐性位)
4. 过载帧 (Overload Frame)
用于在帧间延迟不足时请求额外延迟,结构与错误帧类似:
- 过载标志(6位显性位)
- 过载界定符(8位隐性位)
5. 帧间空间 (Interframe Space)
严格来说不是帧,而是帧间的间隔,包含:
- 间隔(3位隐性位)
- 总线空闲(可变长度隐性位)
CAN FD帧类型
CAN FD (Flexible Data Rate)扩展了传统CAN,帧类型类似但有以下区别:
- 支持更长的数据域(最多64字节)
- 两种比特率(仲裁阶段和数据处理阶段不同速率)
- 新增FDF(FD格式)位和BRS(比特率切换)位
帧类型识别
通过以下关键位区分帧类型:
- SOF后的显性/隐性位模式
- RTR位状态
- IDE位状态
- 控制域特定位的组合
理解这些帧类型对于CAN总线通信的开发和故障诊断至关重要。