CAN总线协议详解

CAN(Controller Area Network) 是一种广泛应用于汽车电子、工业控制等领域的串行通信协议,由Bosch公司于1986年提出,现已成为ISO国际标准(ISO 11898)。它具有高可靠性、实时性强、抗干扰能力强等特点,支持多主通信和冲突检测机制。


1. CAN协议基本特性

  • 多主通信:所有节点均可主动发送数据,无主从结构。
  • 非破坏性仲裁:基于标识符(ID)优先级的冲突解决机制(低ID优先级高)。
  • 高可靠性
    • CRC校验(15位循环冗余校验)
    • ACK应答机制(接收节点确认数据正确)
    • 错误检测与恢复(自动重发错误帧)
  • 传输速率
    • 经典CAN:最高1 Mbps(短距离)
    • CAN FD(Flexible Data Rate):最高5 Mbps(数据段)
  • 数据长度
    • 经典CAN:每帧最多8字节
    • CAN FD:每帧最多64字节

2. CAN帧结构

CAN协议定义了5种帧类型

  1. 数据帧(Data Frame)——用于传输数据
  2. 远程帧(Remote Frame)——请求其他节点发送数据
  3. 错误帧(Error Frame)——报告通信错误
  4. 过载帧(Overload Frame)——请求延迟
  5. 帧间空间(Interframe Space)——帧之间的间隔

(1)数据帧(Data Frame)

用于节点发送数据,结构如下:

[SOF] [仲裁段] [控制段] [数据段] [CRC] [ACK] [EOF]
  • SOF(Start of Frame):1 bit 显性(0),表示帧开始。
  • 仲裁段(Arbitration Field)
    • 11位标识符(标准CAN)29位标识符(扩展CAN)
    • RTR(Remote Transmission Request):显性(0)表示数据帧
  • 控制段(Control Field)
    • IDE(Identifier Extension):显性(0)表示标准帧,隐性(1)表示扩展帧
    • DLC(Data Length Code):4 bits,表示数据长度(0~8字节)
  • 数据段(Data Field):0~8字节(CAN FD可达64字节)
  • CRC(Cyclic Redundancy Check):15位校验 + 1位界定符
  • ACK(Acknowledge)
    • ACK Slot(1 bit):发送隐性(1),接收节点应答显性(0)
    • ACK Delimiter(1 bit隐性)
  • EOF(End of Frame):7 bits 隐性(1),表示帧结束

(2)远程帧(Remote Frame)

用于请求其他节点发送数据,结构与数据帧类似,但:

  • RTR位为隐性(1)
  • 无数据段
  • DLC表示请求的数据长度

(3)错误帧(Error Frame)

当节点检测到错误时发送,结构:

[错误标志(6位显性/隐性)] [错误界定符(8位隐性)]
  • 主动错误标志(6位显性):正常节点检测到错误时发送
  • 被动错误标志(6位隐性):错误计数高的节点发送

(4)过载帧(Overload Frame)

当节点处理速度跟不上时发送,结构与错误帧类似:

[过载标志(6位显性)] [过载界定符(8位隐性)]

(5)帧间空间(Interframe Space)

用于分隔连续帧,包含:

  • 间隔(3位隐性)
  • 总线空闲(任意长度隐性位)

3. CAN总线仲裁机制

  • 基于ID的非破坏性仲裁
    • 所有节点同时发送时,ID越小优先级越高
    • 发送过程中,节点会监听总线,如果发现自己的ID被更高优先级的帧覆盖,则自动退出发送。
  • 示例
    • 节点A发送ID 0x101(二进制 00010000001
    • 节点B发送ID 0x102(二进制 00010000010
    • 在传输第8位时,节点B检测到总线为0(节点A的ID更低),于是退出发送。

4. CAN FD(Flexible Data Rate)

CAN FD是对经典CAN的扩展,主要改进:

  • 更高的数据速率(仲裁阶段仍用标准速率,数据阶段可提速至5 Mbps)
  • 更长的数据长度(最多64字节)
  • 改进的CRC校验(21位CRC,提高可靠性)
  • 新增控制位
    • FDF(FD Format):表示CAN FD帧
    • BRS(Bit Rate Switch):允许数据段切换速率

5. CAN总线应用

  • 汽车电子(ECU通信,如发动机控制、ABS、仪表盘)
  • 工业控制(PLC、传感器网络)
  • 医疗设备
  • 航空航天

6. 常见CAN协议变种

协议特点
CAN 2.0A标准帧(11位ID)
CAN 2.0B支持扩展帧(29位ID)
CAN FD高速数据段(最高5 Mbps,64字节数据)
CAN XL下一代CAN,支持更大数据包(2048字节)

总结

  • CAN总线采用多主通信+非破坏性仲裁,适合高可靠性应用。
  • 数据帧用于传输数据,远程帧用于请求数据,错误帧用于错误处理。
  • CAN FD提供更高速度和更大数据容量。
  • 广泛应用于汽车、工业控制等领域。

如果需要更详细的某个部分(如CAN FD、错误处理机制等),可以进一步探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正当少年

随缘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值