01
咱们汽车越来越智能,像发动机控制、ABS防抱死、自动空调、中控系统等电子模块越来越多。如果每个模块都单独走线,那汽车里的线束就会多得像一团乱麻,不仅接线麻烦、成本上升,还容易出故障。

CAN总线就是为了解决这个问题而生的。它的全称是控制器局域网(Controller Area Network),是一种在汽车、工业控制等领域广泛使用的串行通信协议。简单来说,它就像一条数据高速公路,让多个电子控制单元(ECU)可以通过一对双绞线进行高效、可靠的通信,大大减少了线缆数量,也提升了系统的灵活性和可靠性。

CAN最早是由德国博世(BOSCH)公司在1986年为汽车电子系统开发的,后来被国际标准化组织(ISO)采纳,成为汽车网络的国际标准。如今,CAN不仅用于汽车,还广泛出现在工业自动化、船舶控制、医疗设备、机器人等多个领域。
02
瑞萨电子出版的这份《CAN入门书》是一本面向初学者的实用指南,这份文档内容适用于软件开发工程师,硬件开发工程师,对协议基础能有一个基本的认识,内容从CAN的基本概念讲起,逐步深入到协议细节、错误处理、帧结构、时序同步等核心内容。下面我挑几个知识点带大家过一遍:
先说这CAN的基本特点。CAN总线采用多主控制,所有节点在总线空闲时均可发起通信。当多个节点同时传输时,系统通过标识符(ID)进行智能仲裁,ID值小的优先级高,自动胜出继续发送,其余节点则安静转为接收。协议内置三重容错机制:实时错误检测、全网广播告警、自动重发恢复,并能智能隔离故障节点。扩展时无需地址分配或修改现有配置,真正实现即插即用。

关于CAN的帧类型,王工可能这么理解:“这就好比几个人之间传纸条,有正经传内容的数据帧,有向别人要东西的遥控帧,还有发现纸条写错了赶紧发个刚才那条作废的错误帧。要是手头忙不过来,也能发个过载帧说:“等等,我还没准备好”。帧与帧之间还得留点空隙,就是帧间隔,别把不同事儿的纸条粘一块儿了。”
说到错误处理机制,CAN总线的强大之处在于它的容错能力。每个设备都随时在检测错误,一旦发现错误,会立即发送错误帧通知全网,然后自动重发。设备还会根据错误次数进入不同的错误状态,严重时甚至自动离线,避免影响整个网络。

谈到物理层与标准,这里要提醒大家注意区分:先弄清楚要做什么事。因为分为两种标准:高速CAN(ISO11898)和低速CAN(ISO11519-2)。要是发动机控制这种,就得用高速CAN,跑得快,线不能拉太长。要是控制车窗、车灯这些,用低速CAN就行,经济实惠还能拉得远点。这俩标准电压、电阻啥的都不一样,选用时需注意匹配相应的驱动芯片。”

讲到位时序与同步,CAN通信中没有单独的时钟线,设备靠数据信号自身的边沿来同步。每个位时间被分成4段:同步段、传播段、相位缓冲段1和2。通过调整这些段的长短,设备可以在一定误差范围内保持同步,保证数据采样准确。