☰
CAN诊断基础面试常见问答
2026/10/10 7:16:39 网站建设 项目流程

CAN诊断速通笔记,按"面试追问概率"排序。


一、CAN总线基础(铺垫层,5分钟)

一句话定义:CAN是差分串行总线(CAN_H / CAN_L两根线),多主仲裁,靠报文ID决定优先级(ID越小优先级越高)。

面试必知的4个数字:

项目关键值
标准帧ID11位(0x000~0x7FF)
扩展帧ID29位(车厂诊断一般用它)
单帧数据段最多8字节(CAN FD才有64字节)
常见诊断波特率500K / 250K,诊断刷写常用1M

帧类型:数据帧、远程帧、错误帧、过载帧——问到了答"诊断主要用数据帧"即可。


二、诊断寻址(重点,UDS over CAN的核心)

车载诊断消息用CAN ID来区分"说给谁听":

1. 物理寻址(Physical Addressing)—— 一对一

  • 测试仪 → ECU:ID如0x7E0(发给具体某个ECU)
  • ECU → 测试仪:ID如0x7E8(该ECU的应答地址)
  • 特点:有问必答,诊断仪刷写、读DID、安全解锁都用这个

2. 功能寻址(Functional Addressing)—— 一对多(广播)

  • 测试仪 → 所有ECU:ID如0x7DF
  • 特点:通常只有会话控制(0x10)、部分ECU复位类服务用广播;且不支持多帧传输(广播没人做流控),这是常考点

记忆口诀:物理寻址=私聊(0x7E0/0x7E8),功能寻址=群发(0x7DF),群发不能发长消息。


三、单帧 / 多帧传输(ISO-TP层,重点)

CAN一帧只能装8字节,但UDS请求经常超8字节(比如WriteDataByIdentifier写VIN码),所以传输层用ISO 15765-2(ISO-TP)拆包:

PCI字节(每帧第一个字节的高4位)区分帧类型:

帧类型PCI首字节说明
单帧 SF0x0XX=数据长度,≤7字节直接发
首帧 FF1X XX表示"我要发多帧了",X XX=总数据长度
连续帧 CF2X后续数据帧,X=序号1,2,3…F循环
流控帧 FC3X接收方应答:BS块大小、STmin间隔时间

经典流程(能复述这个就过关):

诊断仪 → ECU:10 14 (首帧:我要发20字节) ECU → 诊断仪:30 00 00 (流控:继续发,无限制) 诊断仪 → ECU:21 xx xx... (连续帧,序号从1开始) 诊断仪 → ECU:22 xx xx...

关键细节:连续帧序号到0x2F后回绕到0x20;流控帧里的STmin是两帧之间的最小发送间隔。


四、UDS请求/响应规则(和寻址联动,重点)

正常肯定响应 = 服务ID + 0x40

请求: 22 F1 90 (ReadDataByIdentifier,读VIN) 肯定响应:62 F1 90 xx xx... (0x22+0x40=0x62)

否定响应 = 7F + 原服务ID + NRC

请求: 22 F1 90 否定响应:7F 22 31 (NRC=0x31,requestOutOfRange)

必背的6个NRC(面试最高频):

NRC名称触发场景
0x11serviceNotSupported服务不支持
0x12subFunctionNotSupported子功能不支持(如10 05)
0x13incorrectMessageLengthOrInvalidFormat长度/格式错误
0x22conditionsNotCorrect条件不满足(如车速不为0时刷写)
0x31requestOutOfRangeDID/DTC不存在或越界
0x33securityAccessDenied没解锁就访问受保护数据

响应抑制位(suppressPosRspMsgIndicationBit):请求服务带子功能时,子功能字节的最高位bit7=1表示"成功就不要回肯定响应了"(减少总线负载)。例如10 82= 进入默认会话且不回响应。


五、CANoe实操口径(工具层面兜底)

被问"CANoe里怎么做诊断"按这个答:

  1. 用Diagnostic Console(手动发诊断请求)或写CAPL脚本(自动化)
  2. 需要加载诊断描述文件(CDD/PDX,里面有DID、安全算法、会话配置)
  3. 用Panel做交互界面,用Test Module跑诊断测试序列,最后出HTML报告
  4. Log分析看Trace窗口:正常/异常响应、NRC、多帧流控时序一目了然

自测清单(能答出这8题就安全)

  1. 物理寻址和功能寻址的区别?功能寻址为什么不能有肯定响应和多帧?
  2. 22服务读到数据的肯定响应SID是多少?
  3. 否定响应7F 22 78是什么意思?(0x78 = responsePending,请求已收到正在处理——刷写时常见)
  4. 首帧PCI是10 14表示什么?
  5. 连续帧序号超了0x2F怎么办?
  6. NRC 0x33 什么时候出现?
  7. 为什么刷写前要做安全访问(27服务)?(防盗/防误刷写,种子-密钥机制)
  8. CANoe诊断需要加载什么文件?

把第二、三、四节背熟(约30分钟),第一、五节理解即可。有答不上来的具体题随时来问。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询