1. 课程导入
各位工程师朋友,咱们开始第一课。做车载网络诊断,CAN总线是绕不开的基础。很多故障,说白了就是物理层出了问题。你软件层分析得再漂亮,波形都畸变了,一切白搭。今天我就带大家把CAN物理层的三个核心概念彻底吃透。
1.1 差分信号原理:为什么CAN总线这么“抗造”?
CAN总线用的是差分信号传输。什么意思呢?它不是靠一根线对地的电压高低来表示0和1,而是靠两根线——CAN_H和CAN_L——之间的电压差。
你想想看,车间里电机启动、大灯闪烁,电磁干扰到处都是。如果像普通串口那样用单端信号,地电平一飘,数据就错了。差分信号就不一样:干扰是共模的,同时作用在两根线上,电压差基本不变。这就是CAN总线能在恶劣环境下稳定工作的根本原因。
核心公式:总线电平 = CAN_H - CAN_L
显性(Dominant):CAN_H ≈ 3.5V,CAN_L ≈ 1.5V,差分电压 ≈ 2V
隐性(Recessive):CAN_H ≈ 2.5V,CAN_L ≈ 2.5V,差分电压 ≈ 0V
我在项目中遇到过一台车,只要一开空调,CAN通讯就丢帧。查了半天,发现是空调压缩机的EMC滤波电容老化,导致共模干扰把差分信号淹没了。换了个电容,问题解决。这就是差分信号的优势——但前提是两根线的布线要对称,阻抗要匹配。
1.2 CAN_H与CAN_L电平定义:别把两根线搞反了
CAN_H和CAN_L的电平,不同标准下略有差异。咱们最常用的高速CAN(ISO 11898-2),电平定义如下:
| 状态 | CAN_H电压 | CAN_L电压 | 差分电压 |
|---|---|---|---|
| 隐性(逻辑1) | 2.5V | 2.5V | 0V |
| 显性(逻辑0) | 3.5V | 1.5V | 2V |
嗯,这里要注意:显性电平会“覆盖”隐性电平。也就是说,只要有一个节点发送显性位,总线就是显性。这是CAN总线仲裁机制的基础。
避坑指南:我曾经遇到一个案例,维修工把CAN_H和CAN_L接反了。结果呢?差分电压变成了负值,所有节点都收不到数据。用万用表量CAN_H对地是1.5V,CAN_L对地是3.5V,明显反了。所以,测量时一定要先确认哪根是CAN_H,哪根是CAN_L。
1.3 终端电阻的作用与测量方法
终端电阻,是CAN总线物理层最容易忽略、也最容易出问题的地方。
它的作用有两个:
- 消除信号反射:高速信号在总线末端如果不匹配阻抗,会产生反射,导致波形畸变。
- 提供隐性电平:当所有节点都处于隐性状态时,终端电阻把CAN_H和CAN_L拉到2.5V。
标准高速CAN总线,两端各有一个120Ω的电阻。为什么是120Ω?因为双绞线的特性阻抗大约是120Ω,匹配了才能最大程度减少反射。
测量方法:
- 断开所有节点电源(重要!带电测量会不准)。
- 用万用表电阻档,测量CAN_H与CAN_L之间的电阻。
- 正常值:约60Ω(两个120Ω并联)。
- 如果测到120Ω:说明只有一个终端电阻,或者总线某处断开了。
- 如果测到0Ω:说明CAN_H和CAN_L短路了。
- 如果测到无穷大:说明两个终端电阻都丢了,或者总线完全断开。
我个人习惯,上车第一件事就是量终端电阻。60Ω左右,说明物理层基本没问题。如果偏离太多,波形肯定不对。
我记得有一次,一台车CAN通讯时好时坏。量终端电阻,发现是120Ω。查了半天,原来是总线末端的节点被人拔掉了,少了一个终端电阻。插回去,问题消失。所以,终端电阻的测量是快速定位物理层故障的第一步。
1.4 知识体系总览
下面这张图,把CAN物理层的核心逻辑串起来了。你可以把它当作一个快速排查的思维导图。
1.5 实战要点总结
最后,我把这一章的核心要点列出来,方便你以后快速回顾:
- 差分信号是CAN抗干扰的根本,两根线必须对称布线。
- CAN_H和CAN_L的电平,显性时差2V,隐性时差0V。测量时先确认哪根是哪根。
- 终端电阻是物理层健康的“体温计”。上车先量,60Ω是标准答案。
- 如果遇到CAN通讯故障,别急着分析协议,先拿万用表量电阻、量电压。物理层没问题,再往上查。
我的经验:80%的CAN总线故障,其实都是物理层的问题。终端电阻丢失、CAN_H/CAN_L短路或断路、接插件接触不良——这些占了绝大多数。把物理层搞扎实了,你就已经赢了一半。