news 2026/10/19 7:22:43

【02】ISO 15765-2 拆帧的具体逻辑是怎样的?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【02】ISO 15765-2 拆帧的具体逻辑是怎样的?

ISO 15765-2 拆帧的核心逻辑是:先看 UDS 应用层数据有多长,再判断能否放进一个 CAN 帧;放不下就拆成“首帧 + 连续帧”,中间用“流控帧”控制节奏。

1. 先判断:要不要拆帧?

以常见 CAN 2.0 为例,一个 CAN 帧数据域最多8 字节。ISO-TP 还要占用 1 字节做帧头,所以:

情况判断方式使用帧类型
数据 ≤ 7 字节一个 CAN 帧装得下单帧 SF
数据 > 7 字节一个 CAN 帧装不下首帧 FF + 连续帧 CF
接收方需要控速多帧传输中流控帧 FC

CAN FD 下阈值会更高,但原理相同。

2. 四种帧怎么区分?

ISO 15765-2 用 CAN 数据域第 1 个字节的高 4 位 N_PCI type来区分帧类型。

帧类型N_PCI 高 4 位作用
单帧 SF0x0短数据一帧发完
首帧 FF0x1告诉对方总长度,并携带前 6 字节数据
连续帧 CF0x2携带后续数据,带序列号 SN
流控帧 FC0x3接收方控制发送节奏

3. 单帧 SF:短数据不拆

当 UDS 报文 ≤ 7 字节时,直接发单帧。

例如读取 DID 的请求:

02 22 F1 90 00 00 00 00
  • 02:单帧,有效数据长度 2
  • 22 F1 90:UDS 服务 0x22,DID 0xF190
  • 后面补 0 或填充字节

这种在 Trace 里最简单,一眼就能看出是一条完整 UDS 请求或响应。

4. 多帧传输:FF → FC → CF

当数据超过 7 字节时,典型流程是:

发送方 接收方 |── FF(首帧)───────────────>| |<── FC(流控帧)─────────────| |── CF#1(连续帧)───────────>| |── CF#2(连续帧)───────────>| |── ... ────────────────────>| |<── FC(下一个块)───────────| 如果 BS 有限制 |── CF#n ───────────────────>|
首帧 FF

首帧负责两件事:

  1. 声明总数据长度;
  2. 携带前 6 字节有效数据。

格式大致是:

1X XX D1 D2 D3 D4 D5 D6
  • 第 1 字节高 4 位 = 1,表示首帧;
  • 第 1 字节低 4 位 + 第 2 字节组成12 位总长度 FF_DL;
  • 第 3~8 字节是前 6 字节数据。

例如:

10 0F 22 F1 90 00 00 00

表示总长度 0x00F = 15 字节,后面还有 9 字节要通过连续帧发送。

流控帧 FC

接收方收到首帧后,要先回一个流控帧,告诉发送方“怎么发”。

30 00 14 00 00 00 00 00
  • 30:高 4 位 = 3,表示流控帧;低 4 位 = 0,表示 CTS,继续发送;
  • 00:BS = 0,表示连续帧数量无限制;
  • 14:STmin = 20 ms,表示连续帧之间至少间隔 20 ms。

流控帧里的三个关键字段:

  • FS 流状态:0x0继续发送,0x1等待,0x2溢出/终止;
  • BS 块大小:允许连续发送多少个 CF,0 表示无限制;
  • STmin 最小间隔:两个连续帧之间最小等待时间。
连续帧 CF

连续帧负责搬运剩余数据,每帧最多携带 7 字节。

21 D7 D8 D9 DA DB DC DD 22 DE DF 00 00 00 00 00
  • 高 4 位 = 2,表示连续帧;
  • 低 4 位是序列号 SN;
  • SN 从 1 开始递增:21, 22, 23 ... 2F, 20, 21 ...,到 0xF 后回绕。

接收方根据 FF 声明的总长度和 CF 的 SN,把数据按序拼回完整 UDS 报文。

5. 在 CANoe Trace 里怎么看?

排查时可以把日志按 PCI 类型快速过滤:

  • 0x开头:单帧,通常是一条完整诊断请求/响应;
  • 1x xx开头:首帧,说明后面还有连续帧;
  • 2x开头:连续帧,注意 SN 是否连续;
  • 3x开头:流控帧,重点看 FS、BS、STmin。

如果看到首帧之后长时间没有流控帧,可能是N_Bs 超时;如果连续帧中途断开,可能是总线负载过高、STmin 过小、BS 配置不当或 ECU 处理超时。

6. 一句话记忆

单帧看长度,首帧报总量,流控定节奏,连续帧搬数据,序列号保顺序。
看 Trace 时先找1x首帧,再顺着2x连续帧和3x流控帧,就能还原整条 UDS 长报文。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 7:22:27

从零开始的C++生活——第二讲——02

接着讲类和对象的相关知识。今天我们首先介绍一下类的默认成员函数。默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数&#xff0c;一个类在不手动写的前提下会默认生成6个成员函数&#xff0c;这六个中最重要的是前四个&#xff0c;注意的是C11后还会…

作者头像 李华
网站建设 2026/10/19 7:21:40

顶级PS室内效果图后期教程:家装客厅/书房/酒吧餐厅4章实战案例

资源概述 这是一套以Photoshop为核心工具的室内效果图后期处理教程&#xff0c;整体围绕"效果图华丽逆袭"这一主题展开。资源按照章节结构组织&#xff0c;通过不同场景的实际案例&#xff0c;帮助学习者掌握从普通渲染图到高质量室内效果图的后期处理流程。 配套内…

作者头像 李华
网站建设 2026/10/19 7:21:31

用纯C实现UDP字典服务:理解无连接协议的关键

做网络编程练手项目&#xff0c;大部分人第一站是 TCP 回显服务&#xff0c;第二站是聊天室。但我越来越觉得&#xff0c;想真正理解"网络协议的本质是权衡"这件事&#xff0c;光写 TCP 是不够的&#xff0c;UDP 才是那个逼你思考的题目。所以我用纯 C 在 Linux 上写…

作者头像 李华
网站建设 2026/10/19 7:21:25

分类与目标检测评估指标详解:从准确率、F1到mAP的避坑指南

做过一段时间模型评估的人大概都有过这种体验&#xff1a;模型在测试集上准确率明明有98%&#xff0c;可一跑到真实业务场景里就露馅了&#xff0c;被业务方追着问"你这模型是不是不行"。问题往往不是模型坏了&#xff0c;而是你从一开始就选错了度量标准。机器学习指…

作者头像 李华
网站建设 2026/10/19 7:19:54

函数 函数 函数

函数的概念库函数自定义函数形参和实参return语句数组做函数参数嵌套调用和链式访问函数的声明和定义 1. 函数的概念 C语言中函数的概念可以理解为子程序&#xff1a;函数就是一段用于完成某项特定任务的代码。 C语言的程序实际上是由无数个小的函数组合而成的。也可以说&#…

作者头像 李华