• 183查看
  • 0回复

[底层软件] UDS 传输层CANTP

[复制链接]


该用户从未签到

发表于 26-4-2024 22:07:18 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


应用场景:

在APP模式下,发送报文长度大于8或者大于64(CANFD)时,就会自动开启流控模式。在Boot模式下,由于使用到$36下载服务,涉及到大量数据的传输,也必然会使用到流控。由上可知,BS与Stmin的大小能够用来评估接收方的接收能力,如果都为0,表示接收方接收能力最强;当然,有些时候,虽然Boot均可以设置为0,但是往往FBL刷写过程中涉及到网关的转发,而网关接收能力存在限制,因此,此时对应的Boot也必须按照网关的接收能力来设置BS与Stmin。

特点:

大数据传输: CAN TP旨在支持大容量数据的传输,适用于需要传输大块数据的场景,例如固件升级、配置文件传输等。

分段传输: 由于CAN消息的数据长度限制,CAN TP使用分段传输机制,将大块数据划分为多个小块进行传输,从而克服了CAN消息长度的限制。

流控制: CAN TP引入流控制机制,以确保发送方和接收方之间的数据传输同步。接收方可以告知发送方,可以接受下一个数据块的数量。

多帧格式: CAN TP定义了多种帧格式,包括Single Frame、First Frame、Consecutive Frame等,用于在CAN消息中传输数据块。

协议层次:

物理层:使用标准的CAN物理层,如ISO 11898定义的电气特性。

数据链路层:实现了CAN TP协议的数据链路层,包括数据分段、流控制等功能。

通信流程:

帧发送:发送方将大数据块划分为多个小数据块,按照CAN TP协议的帧格式进行封装。

帧接收:接收方解析接收到的CAN TP帧,进行相应的处理,包括组装数据块、流控制等。

分段传输:数据块通过分段传输,发送方和接收方通过流控制协商下一步的传输动作。

帧确认:接收方向发送方确认已成功接收的数据,以便发送方知道何时可以发送下一个数据块。

单帧:SF(Single Frame),用于发送单个CAN帧即可发送完成的数据;

首帧:FF(First Frame),用于发送较大数据情况下的第一帧;

连续帧:CF(Consecutive Frame),用于发送较大数据情况下首帧外的其余部分;

流控帧:FC(Flow Control),接收后用于调节数据发送速度。

I-PDU:Interaction Layer PDU,I-PDU包括数据,数据长度及I-PDU ID;

N-PDU:Network Layer PDU,网络层PDU;

L-PDU:Data Link Layer PDU,一个或多个I-PDU组包成一个L-PDU.

SDU:Service Data Unit

UDS  传输层CANTPw1.jpg

传输流程图:

UDS  传输层CANTPw2.jpg

示例:下图为一个通过指定DID来读取相关数据的服务(UDS022服务)

UDS  传输层CANTPw3.jpg

Step1:

0:表示单帧(SF);

3:表示一个长度为8字节的报文,后面的负载长度是3个字节;

22:表示诊断的22服务;

F1 B3:指定的DID值

Step2:

1:表示首帧(FF);

8:表示整个数据包的长度为8个字节;即:65 32 15 15 16 51 36 36

Step3:

3:表示流控帧(FC);

0:表示流状态是继续发送帧(FlowStatus=0);

8:表示buffer size为8个字节;

14:表示连续帧的时间间隔为20ms;

Step4:

2:表示连续帧;

1:序列号值为1(SequenceNumber=1),因为此帧是紧接首帧的连续帧;

36 36 :报文数据; CC填充位;

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 27-12-2024 11:32 , Processed in 0.618574 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.