示波器 CAN 总线波形解读与 CAN 通信观测实操
一、图整体解读:CAN FD/CAN 标准帧波形 + 位填充规则
1. 核心知识点:CAN 位填充规则(图红色标注)
CAN 总线硬件规定:发送时连续出现 5 个相同电平(5 个 0或5 个 1),自动插入 1 位相反电平(补充位),接收端识别后自动剔除填充位,用于同步时钟、避免长时间无跳变导致采样失步。图中红框00000连续 5 个 0,因此插入 1 个 1 作为填充位,波形上能看到额外的跳变脉冲。
2. 帧分段逐段拆解(二进制串:0001 000001 001 0001 0000 101010)
- 超起始位(SOF 帧起始)空闲时 CAN-H 高、CAN-L 低(隐性电平 1);SOF 强制拉为显性 0,1 个显性位,作为一帧数据的开始,图最左侧第一个下降沿就是 SOF。
- 仲裁段 - ID:0x101(标准 11 位 ID)二进制
0001000001,对应十进制 257、十六进制0x101;中间00000连续 5 个 0,触发位填充,插入 1 位 1(粉色框标注的补充位),原始 ID 逻辑要去掉填充位才是真实 ID。 - RTR 位(远程发送请求)0 = 数据帧(本机发送数据);1 = 远程帧(请求对方发数据),本帧 RTR=0,是普通数据帧。
- IDE 位(标识符格式)0 = 标准 11 位 CAN2.0A;1 = 扩展 29 位 CAN2.0B,本帧 IDE=0,标准帧。
- r0 保留位CAN 标准帧预留位,固定填 0。
- DLC 数据长度码4bit,代表后续数据段字节数,图中
0000代表 DLC=0,本帧无数据负载。 - 后续:CRC 校验 + ACK 应答 + 帧结束 EOF末尾
101010是 CRC 校验区、ACK 槽、EOF 结束位,隐性电平 1 为主。
3. 示波器波形通道说明
- CH2:CAN 差分总线原始波形(CANH/CANL 差分信号);
- ΔX=20.90μs:示波器光标测得 1bit 位宽;
- 波特率计算:
1/20.90μs ≈ 47.85kHz,总线波特率约 50kbit/s; - 时基档位 5us/div:横轴一格代表 5 微秒,方便测量单 bit 宽度。
二、示波器观测 CAN 通信操作步骤
步骤 1:硬件接线(差分测量,避免干扰)
CAN 是差分信号,推荐两种测量方式:
- 差分探头:差分探头正极接 CAN-H,负极接 CAN-L,GND 接地;直接输出差分波形,抗电机、电源干扰,波形干净(图中 CH2 就是差分波形)。
- 普通单端探头(简易)
- CH1 接 CAN-H,CH2 接 CAN-L;
- 示波器开启数学运算 MATH:CH1-CH2,得到差分 CAN 波形;
- 两个探头地线必须共接GND,减少噪声。
注意:CAN 隐性电平(空闲):CANH≈2.5V、CANL≈2.5V,差分压差≈0V(逻辑 1);显性电平:CANH≈3.5V、CANL≈1.5V,差分压差≈2V(逻辑 0)。
步骤 2:示波器基础参数配置
- 垂直档位(电压)单端探头:1V/div(图 CH2 标注 1V,10X 衰减探头);差分波形峰峰值约 2V,1V/div 刻度刚好看清高低电平。
- 时基(横轴时间)根据波特率选择:
- 50k~125k:5μs/div(本图档位);
- 250k~500k:1μs/div;
- 1M 波特:0.5μs/div;目标:屏幕能放下完整一帧波形,同时看清单个 bit 跳变。
步骤 3:触发设置(稳定抓取单帧 CAN 波形,最关键)
CAN 空闲时全是隐性 1,只有 SOF 是显性 0,用下降沿触发锁定每一帧:
- 触发源:选择差分运算通道(或 CH1 CAN-H);
- 触发类型:边沿触发,下降沿;
- 触发电平 Level:调至 2V 左右,只捕捉 SOF 的下降沿;
- 触发模式:正常 / Normal,避免自动 Auto 持续滚动。设置后示波器每收到一帧,自动定格完整波形,不会杂乱滚动。
步骤 4:位宽与波特率测量(图中光标操作)
- 开启双光标(图右侧两个光标按钮);
- 光标 1 对准某 bit 上升沿,光标 2 对准下一个 bit 同位置;
- ΔX 读数 = 单 bit 时间,计算波特率:
波特率=1/ΔX本图 ΔX=20.9μs,1/20.9e-6≈47847bps,实际总线 50kbps,微小误差来自示波器采样。
步骤 5:解码读取 CAN 数据(两种方法)
方法 A:人工逐 bit 读取(本图方式,适合理解协议)
- 以 SOF 下降沿为起点,按 bit 依次记录高低电平(低 = 0 显性,高 = 1 隐性);
- 遇到连续 5 个相同 bit 时,剔除填充位,还原原始协议二进制;
- 按 SOF→ID→RTR→IDE→DLC→CRC 分段翻译,转十六进制 ID、DLC、数据。
方法 B:示波器自动 CAN 解码(推荐,效率高)
中高端示波器内置 CAN 协议解码:
- 菜单开启【总线解码】→协议选择 CAN2.0A/B;
- 指定差分输入通道、总线波特率(匹配硬件 50k/125k/500k 等);
- 屏幕下方自动滚动解析出每一帧:ID、RTR、DLC、数据字节、CRC;
- 搭配存储功能(图「快速保存」),记录故障瞬间多帧报文。
步骤 6:故障观测辅助操作
- 位填充异常排查波形出现无规律窄脉冲、5 个相同 bit 后无填充位→CAN 控制器硬件故障;
- 波形畸变观察显性电平压差不足、边沿缓变、毛刺尖峰→线束接触不良、终端电阻缺失(CAN 两端需 120Ω 终端电阻);
- 长时间抓包开启单次触发 + 快速保存,抓取偶发报错帧、总线离线波形。
三、关键总结
- 图本质:标准 CAN2.0A 数据帧差分波形,演示位填充规则与帧结构分段;
- 示波器看 CAN 核心流程:差分接线→边沿下降沿触发→时基匹配波特率→光标测位宽 / 人工解码,或开启自动 CAN 总线解码;
- 判读核心逻辑:显性低电平 = 0,隐性高电平 = 1,连续 5 同 bit 需删除填充位再解析真实报文。
