CAN报文中UDS部分的帧类型
目录
1. 单帧(Single Frame, SF)
2. 首帧(First Frame, FF)
3. 连续帧(Consecutive Frame, CF)
4. 流控制帧(Flow Control Frame, FC)
关键点总结
典型交互流程
在CAN总线中,UDS(Unified Diagnostic Services,统一诊断服务)通过ISO 15765-2(ISO-TP)协议进行多帧传输,其帧类型主要分为以下四种,用于处理数据的分段与重组:
1. 单帧(Single Frame, SF)
-
用途:传输长度较短(≤7字节有效数据)的UDS消息。
-
结构:
-
首字节:最高位为
0
,低7位表示数据长度(如数据长度为3,则首字节为0x03
)。 -
后续字节:有效数据。
-
-
示例:
02 3E 00 00 00 00 00 00
表示单帧,数据长度为2字节(3E 00
),对应UDS的TesterPresent
服务。
2. 首帧(First Frame, FF)
-
用途:长消息的起始帧,声明总数据长度。
-
结构:
-
首字节:最高位为
1
,后续15位表示总数据长度(最大4095字节)。 -
后续字节:携带部分数据(首帧最多6字节有效数据)。
-
-
示例:
10 14 00 3E 00 00 00 00
表示首帧,总数据长度为20字节(0x14
),后续数据为00 3E 00
。
3. 连续帧(Consecutive Frame, CF)
-
用途:跟随首帧或流控制帧,传输剩余数据。
-
结构:
-
首字节:最高位为
3
(十六进制0x3X
),低4位为序列号(从1
开始递增,每发送一帧+1,超过15后归零)。 -
后续字节:携带后续数据(每帧最多7字节)。
-
-
示例:
21 00 00 00 00 00 00 00
表示连续帧,序列号为1,携带7字节数据。
4. 流控制帧(Flow Control Frame, FC)
-
用途:接收方通知发送方数据传输的流控参数(如发送间隔、最大连续帧数)。
-
结构:
-
首字节:流控状态(
0x00
继续发送,0x01
等待,0x02
溢出)。 -
第二字节:允许连续发送的最大帧数(Block Size)。
-
第三字节:帧间最小时间间隔(STmin,单位ms或μs)。
-
-
示例:
30 0A 01 00 00 00 00 00
表示流控帧,允许发送方连续发送10帧(0x0A
),帧间隔1ms。
关键点总结
帧类型 | 标识符(首字节) | 作用 | 数据容量 |
---|---|---|---|
单帧(SF) | 0x0X | 传输短消息 | ≤7字节 |
首帧(FF) | 0x1X | 声明长消息总长度 | 最多6字节数据 |
连续帧(CF) | 0x2X 或0x3X | 传输长消息的后续数据 | 最多7字节数据 |
流控制帧(FC) | 0x3X | 协调发送速率和连续性 | 无有效数据 |
典型交互流程
-
单帧传输:
发送方 → 接收方:SF
(直接完成传输)。 -
多帧传输:
-
发送方 → 接收方:
FF
(声明总长度)。 -
接收方 → 发送方:
FC
(反馈流控参数)。 -
发送方 → 接收方:
CF
序列(按流控要求发送数据)。
-
通过ISO-TP的帧类型,UDS能够可靠地在CAN总线上传输长诊断报文(如刷写ECU时的多帧数据)。实际应用中需结合UDS服务ID(如0x10
为会话控制,0x22
为读取数据)解析具体内容。