2、CAN总线基础:CAN协议起源、ISO 11898标准、差分信号、显性/隐性电平、总线拓扑

CAN(Controller Area Network,控制器局域网络)总线诞生于20世纪80年代中期,由德国博世(Bosch)公司为解决汽车内部日益复杂的电子控制单元(ECU)之间的数据交换问题而设计。在CAN总线出现之前,汽车线束采用点对点连接方式,每增加一个传感器或执行器,就需要增加对应的信号线,导致线束越来越庞大、成本上升、故障率居高不下。CAN总线采用多主串行通信架构,将原本复杂的点对点连线简化为一条双绞线总线,所有节点共享同一物理介质,通过报文ID仲裁机制实现无冲突通信。1986年,Bosch在SAE(汽车工程师学会)大会上正式发布CAN协议;1993年,国际标准化组织将其纳入ISO 11898标准体系,从此CAN总线成为车载网络的事实标准,并逐步扩展到工业控制、医疗设备、轨道交通、船舶电子、无人机等领域。本章将围绕CAN协议的起源、ISO 11898标准体系、差分信号原理、显性/隐性电平定义以及总线拓扑结构展开深入讲解,为后续的报文解析、位定时、错误处理等实战内容奠定基础。

CAN总线物理层与拓扑核心概念图 ECU 节点 1 CAN控制器 + 收发器 ECU 节点 2 CAN控制器 + 收发器 ECU 节点 N CAN控制器 + 收发器 CAN_H CAN_L 120Ω 120Ω 差分信号传输原理 显性 (Dominant) = 逻辑 0 CAN_H ≈ 3.5V / CAN_L ≈ 1.5V 隐性 (Recessive) = 逻辑 1 CAN_H ≈ 2.5V / CAN_L ≈ 2.5V Vdiff = CAN_H - CAN_L 显性: Vdiff ≈ 2V 隐性: Vdiff ≈ 0V 总线拓扑结构 节点 A 节点 B 节点 C 线性总线(干线-支线结构),支线长度 ≤ 0.3m(高速CAN)

2.1 CAN协议起源与ISO 11898标准体系

核心原理:CAN协议的设计初衷是解决汽车电子系统中点对点布线带来的线束臃肿、成本高企、可靠性不足等问题。1986年Bosch公司发布CAN 1.0规范,随后在1991年发布CAN 2.0规范,分为A部分(11位标识符)和B部分(29位标识符)。CAN协议的核心设计思想包括:多主控制(任何节点均可主动发起通信)、基于报文ID的优先级仲裁(ID越小优先级越高)、非破坏性逐位仲裁机制、广播式通信(所有节点同时接收同一帧报文)、错误检测与自动重发(CRC校验、位填充、格式检查、应答检查、位监控)。这些特性使得CAN总线在电磁干扰严重的汽车环境中依然能够保持高可靠性。

ISO 11898标准体系:ISO 11898是CAN总线的国际标准,目前包含多个部分,其中与物理层和链路层最直接相关的是ISO 11898-1(数据链路层与物理信令)和ISO 11898-2(高速CAN物理层)。ISO 11898-2定义了高速CAN(传输速率125kbps~1Mbps)的电气特性,包括差分电压电平、终端电阻要求、线缆规格、拓扑结构限制等。ISO 11898-3则定义了低速容错CAN(传输速率最高125kbps),其物理层与高速CAN有显著差异,允许单线故障时继续通信。此外还有ISO 11898-4(时间触发CAN,TTCAN)、ISO 11898-5(低功耗高速CAN)、ISO 11898-6(选择性唤醒CAN)等扩展标准。

标准编号 定义内容 典型应用 传输速率
ISO 11898-1 数据链路层、物理信令(位编码、同步、仲裁) 所有CAN节点 不限定
ISO 11898-2 高速CAN物理层(差分信号、120Ω终端) 汽车动力总成、车身控制 125kbps ~ 1Mbps
ISO 11898-3 低速容错CAN物理层(单线故障容错) 车身舒适系统、诊断 最高125kbps
ISO 11898-4 时间触发CAN(TTCAN) 线控转向、制动 最高1Mbps

实战要点:在选型CAN收发器芯片时,必须明确目标网络是高速CAN(如TJA1051、MCP2551)还是低速容错CAN(如TJA1054)。两者引脚定义、电平标准、终端电阻策略完全不同,混用会导致通信异常甚至芯片损坏。

2.2 差分信号与显性/隐性电平

核心原理:CAN总线物理层采用差分信号传输方式,使用两根线——CAN_H(高线)和CAN_L(低线)——共同传输一个逻辑信号。接收端通过计算两线电压差(Vdiff = CAN_H - CAN_L)来判断当前总线状态。差分信号的最大优势在于抗共模干扰能力强:外部电磁干扰通常同时作用于两根线上,形成共模噪声,而差分接收器只响应两线之间的电压差,因此共模噪声被有效抑制。此外,差分信号还能降低电磁辐射,因为两根线上的电流方向相反,产生的磁场相互抵消。

显性与隐性电平定义:CAN总线定义两种逻辑状态——显性(Dominant)和隐性(Recessive)。显性电平对应逻辑0,隐性电平对应逻辑1。在高速CAN(ISO 11898-2)中,显性状态下CAN_H电压约为3.5V,CAN_L电压约为1.5V,差分电压Vdiff约为2V;隐性状态下CAN_H和CAN_L均约为2.5V,差分电压Vdiff约为0V。显性电平具有总线优先权:当多个节点同时发送时,只要有一个节点输出显性电平,总线上就呈现显性状态;只有所有节点都输出隐性电平时,总线才呈现隐性状态。这一特性是CAN非破坏性逐位仲裁机制的基础。

判断方法:使用示波器测量CAN总线时,应将通道1接CAN_H,通道2接CAN_L,并设置为差分模式(或使用数学通道计算CH1-CH2)。正常通信时,示波器上应看到CAN_H在2.5V~3.5V之间跳变,CAN_L在1.5V~2.5V之间跳变,差分信号在0V~2V之间跳变。若CAN_H和CAN_L波形完全重合且无差分电压,说明总线处于隐性状态或通信异常;若差分电压始终为2V,说明总线被某个节点持续拉低(显性),可能存在总线锁死或节点故障。

经验提醒:在CAN总线调试中,不要只观察CAN_H或CAN_L的单端波形。单端波形容易受到地电位差和共模干扰的影响,而差分波形才是判断总线状态最可靠的依据。建议示波器探头使用差分探头或采用隔离通道测量。

2.3 总线拓扑结构与终端电阻

核心原理:CAN总线采用线性总线拓扑(干线-支线结构),所有节点通过支线连接到主干线上。主干线两端必须各接一个120Ω终端电阻,用于匹配传输线阻抗,防止信号反射。终端电阻的阻值选择基于双绞线的特征阻抗(通常为120Ω),两个120Ω电阻并联后等效阻抗为60Ω,这与CAN收发器输出阻抗匹配,确保信号完整性。在高速CAN(1Mbps)应用中,支线长度应尽可能短(不超过0.3m),以减少支线带来的阻抗不连续和信号反射。总线总长度受传输速率限制:1Mbps时最大总线长度约40m,125kbps时最大总线长度约500m。

拓扑设计要点:CAN总线拓扑设计应遵循以下原则:主干线采用双绞线,绞距应均匀(每米至少20绞);支线从主干线引出时,应尽量靠近节点放置,避免长支线;终端电阻应安装在主干线物理两端,而非节点内部(除非节点恰好位于总线端点);总线上的节点数量受收发器驱动能力限制,高速CAN通常最多支持32个节点(标准负载),使用低电流收发器可扩展到128个节点。对于星型拓扑或树型拓扑,CAN协议并不推荐,因为分支点会产生阻抗不连续,导致信号反射和通信质量下降。

案例拆解:某商用车车身控制模块(BCM)项目,总线速率250kbps,总线长度约80m,共12个节点。初始设计时,工程师将终端电阻安装在BCM内部和最后一个节点内部,但BCM并非位于总线物理端点,导致总线两端各有一段未端接的短干线。实测发现,总线末端节点通信误码率较高,尤其在发动机启动时(电磁干扰增强)。通过示波器测量发现,总线末端存在明显的振铃现象,信号过冲超过2V。解决方案:将终端电阻移至总线物理两端(即最远端的两个节点),并缩短支线长度至0.2m以内。整改后,振铃现象消失,误码率降为零。

风险提示:不要随意增加或减少终端电阻数量。缺少终端电阻会导致信号反射,表现为波形振铃、边沿过冲;终端电阻过多(如每个节点都接120Ω)会增大总线负载,导致显性电平幅值下降,接收端无法正确识别。在调试中,应使用万用表测量CAN_H与CAN_L之间的直流电阻,正常应为60Ω(两个120Ω并联)。

2.4 常见误区与总结复盘

常见误区一:混淆CAN_H和CAN_L接线。CAN_H和CAN_L必须正确连接到收发器的对应引脚,反接会导致差分电压极性反转,接收端无法解析数据。在总线调试中,应先用万用表确认CAN_H和CAN_L对地电压(正常隐性状态均为2.5V左右),再确认差分电压方向。

常见误区二:忽视共模电压范围。CAN收发器的共模输入电压范围通常为-2V~+7V(ISO 11898-2)。在工业环境中,如果总线两端设备的地电位差过大,共模电压可能超出范围,导致通信失败。解决方案是使用隔离式CAN收发器(如ISO1050)或在总线两端增加共模扼流圈。

常见误区三:将终端电阻安装在PCB板上而非总线端点。当节点位于总线中间时,PCB上的终端电阻会导致该节点成为信号反射点,而非吸收点。正确做法是:只有位于总线物理两端的节点才安装终端电阻,中间节点不应安装。

总结复盘:CAN总线物理层设计是系统稳定运行的基础。设计时应优先确认:总线速率与总线长度的匹配关系(参考ISO 11898-2的速率-长度曲线);终端电阻的位置和阻值(两端各120Ω,总等效60Ω);支线长度控制(高速CAN不超过0.3m);节点数量与收发器驱动能力匹配;共模干扰防护措施(隔离、共模扼流圈、TVS管)。在调试阶段,使用示波器测量差分波形是验证物理层健康度的最直接手段,正常波形应表现为方波形状,边沿陡峭,无振铃、无过冲、无台阶。若发现波形异常,应优先检查终端电阻、线缆连接、节点供电和地电位差,再考虑协议层问题。