CAN调试 安装与部署:接线、波特率与抓包环境
二、安装与部署:接线、波特率与抓包环境
调试前的物理准备决定了后面所有的分析质量,这部分比软件配置更容易出错。
- 确认接线。CAN_H 接 CAN_H,CAN_L 接 CAN_L,不能交叉。所有节点必须共地,否则差分信号没有共同参考电平,会出现"偶尔能通、动一下就断"的现象。屏蔽层一般在单端接地,避免形成地环路。
- 确认终端电阻。经典 CAN 要求在总线物理两端各接一个 120 欧姆电阻。用一个万用表在断电状态下测量 CAN_H 与 CAN_L 之间的电阻,正常读数应当接近 60 欧姆(两个 120 欧姆并联)。如果读到 120 欧姆,说明只有一端有电阻;读到 40 欧姆,说明有三端接了电阻;读到接近无穷大,说明两端都没有。这一步能排除相当比例的通信故障。
- 配置分析仪。常见的 USB-CAN 分析仪有 CANable 系列(candleLight 固件,Linux 下表现为 SocketCAN 设备)、PCAN-USB、Kvaser、以及国产的 USBCAN 系列。PCAN 与 Kvaser 在 Windows 下有成熟的上位机,CANable 在 Linux 下与内核 SocketCAN 集成最顺。
- Linux 下启用 SocketCAN。插入 CANable 后系统会出现
can0或slcan0接口,Slcan 需要先配置串口,candleLight 固件则直接是原生 CAN 接口:# 原生 CAN 接口(candleLight / gs_usb) sudo ip link set can0 up type can bitrate 500000 # 串口线(slcan) sudo slcand -o -c -s6 /dev/ttyACM0 slcan0 sudo ip link set slcan0 up-s6是 slcan 的波特率编号,与 500k 对应,不同编号对应的速率需查阅 slcand 手册,不能凭记忆写。 - 设置采样点。默认采样点不一定符合设备要求,尤其是长线缆或高波特率场景。可以显式指定:
sudo ip link set can0 down sudo ip link set can0 type can bitrate 500000 sample-point 0.875 sudo ip link set can0 up - 验证链路。用一条自发自收的报文确认接口能工作,再挂上真实设备:
如果终端 A 能看到这帧,说明接口本身正常。# 终端 A 监听 candump can0 # 终端 B 发送 cansend can0 123#1122334455667788 - 查看接口状态与错误计数。
-details -statistics会打印波特率、状态、以及各类错误计数,是判断总线健康状况的主要依据:
重点关注ip -details -statistics link show can0bus-off、error-warning、restart这几个计数的增长。
常见故障与排查。
| 现象 | 根因 | 处理方式 |
|---|---|---|
write: Network is down | 接口未 up,或波特率配置失败 | 用 ip link show 确认状态,检查 bitrate 参数是否被设备接受 |
| 接口能 up 但收不到任何报文 | 波特率与总线不一致,或未接终端电阻 | 确认所有节点波特率一致;测量总线电阻应为约 60 欧姆 |
| 总线上错误帧持续增多 | 采样点不匹配、线缆过长、干扰 | 调整采样点;缩短线缆;检查屏蔽与布线是否远离动力线 |
| 节点频繁进入 Bus-Off | 应答缺失,总线上只有它一个节点 | 接入第二个正常节点;检查该节点的收发器 |
| 报文能收到但数据明显不对 | 字节序或信号位定义理解有误 | 用 DBC 文件解析,或逐位核对协议定义 |
| 报文周期性丢失 | 总线负载过高,低优先级报文被延后 | 用总线负载统计工具评估利用率,必要时降周期或改 FD |
| 插拔设备后通信中断 | 热插拔拉低总线电平,或接地电位差 | 断电插拔;确保共地与等电位 |
用示波器看总线波形是定位物理层问题的最直接手段。用差分探头跨接 CAN_H 与 CAN_L,观察隐性电平与显性电平的幅值是否对称、边沿是否干净、有无振铃。振铃通常意味着终端电阻缺失或线缆分支过长(所谓的"猪尾巴"过长)。如果只有单端探头,可以分别测 CAN_H 与 CAN_L 对地的波形,正常时两者应当以约 2.5V 为中心对称摆动。用示波器还能测量位时间,从而反推实际波特率,这在面对一台波特率未知的设备时非常有用。
关于分析仪的选择,需要注意一点:如果只是抓报文分析协议,普通 USB-CAN 分析仪够用;如果要长时间记录并做离线分析,需要关注分析仪的缓冲能力与配套软件的记录功能。candump -l 可以把报文带时间戳记录到文件,canplayer 可以离线回放,这两个工具配合能复现偶发问题。

