CAN通讯和电路:一文读懂,不再踩坑!

起源

CAN(Controller Area Network)总线由德国博世(Bosch)公司于1980年代开发,最初用于汽车电子系统,以减少车辆内部的复杂布线,提高数据传输效率和可靠性。1993年,CAN 总线被国际标准化组织(ISO)采纳,成为 ISO 11898 标准。目前,CAN 已广泛应用于汽车、工业自动化、医疗设备、航天等领域。

信号传输模式

CAN 总线采用差分信号传输,通过一对双绞线(CAN_H 和 CAN_L)来传输数据,提高抗干扰能力和可靠性。

  • 数据帧结构
    标准 CAN(11-bit 标识符)和扩展 CAN(29-bit 标识符)帧格式包括:

    • 起始位:表示帧的开始
    • 标识符(ID):表示消息的优先级
    • 控制字段:标明数据长度
    • 数据字段:包含 0-8 字节数据
    • CRC 校验:保证数据完整性
    • 确认位:接收节点确认数据有效性
    • 结束位:标志帧结束
  • 多主竞争仲裁机制

    • CAN 采用 非破坏性 CSMA/CD-AM 机制(Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority)。
    • 低 ID(高优先级)数据可在总线竞争中获胜,确保重要数据先被传输。

电器参数

  • 电压等级

    • CAN_H 典型电压范围:2.5V - 3.5V(显性 3.5V)
    • CAN_L 典型电压范围:1.5V - 2.5V(显性 1.5V)
    • 隐性状态:CAN_H 和 CAN_L 都为 2.5V
  • 传输速率

    • 典型速率:10kbps ~ 1Mbps(标准 CAN)
    • CAN FD(Flexible Data-rate):支持 5Mbps 以上传输速率
  • 终端电阻

    • 典型值 120Ω,保证总线阻抗匹配,减少反射信号
  • 最大通信距离(标准 CAN)

    • 1Mbps:≤40m
    • 125kbps:≤500m
    • 10kbps:≤5km

应用设计

CAN 设备连接

  • 采用双绞线传输信号,建议用屏蔽双绞线减少干扰
  • 确保每端有120Ω 终端电阻,总线两端都需要终端电阻匹配

典型应用

  • 汽车电子:发动机控制、ABS 刹车系统、空调控制等
  • 工业自动化:PLC 控制、机器人通讯
  • 医疗设备:数据采集、监护仪连接
  • 楼宇自动化:智能照明、安防系统

问题排查方式

  • 物理层检查

    • 测量 CAN_H 和 CAN_L 对地电压是否正常(典型 2.5V)
    • 终端电阻是否匹配(两端各 120Ω,总线整体 60Ω)
  • 通信协议排查

    • 使用示波器查看波形,确认仲裁和数据完整性
    • 通过CAN 分析仪读取数据帧,确认 ID 和数据内容
  • 常见故障与解决方案

    • 无数据传输 → 检查终端电阻、电源供电
    • 数据错误 → 检查波特率是否匹配
    • 总线挂起 → 检查是否有某个节点持续发送显性信号(如设备短路)