UDS诊断系列介绍02-传输层CANTP

前言

本系列Autosar 诊断入门介绍,会详细介绍诊断相关基础知识,如您对诊断实战有更高需求,可参见诊断实战系列专栏,快速链接:Autosar诊断实战系列导读

如您MCAL配置,通信,诊断Autosar全栈等实战有更高需求,可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶系列导读

1. 模块介绍

CANTP(CAN TransportLayer),位于通信栈的传输层,是专门服务于UDS诊断,位于PDUR与CANIF之间,实现了PDUR到CANIF的拆包发送与CANIF到PDUR的组包接收功能。对于多帧大数据支持通过流控帧控制数据发送速率并提供数据发送与接收过程中超时处理功能。
在这里插入图片描述

1.1 CANTP状态机

CANTP内部有两个状态机,分别为CANTP_OFF及CANTP_ON,在ECU刚上电后其状态为CANTP_OFF,经过CanTp_Init()后状态切为CANTP_ON,发送与接收才可以正常进行。
在这里插入图片描述

1.2 涉及概念

单帧: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

2. 功能描述

下面对CANTP的接收与发送功能进行介绍,根据数据大小,将进一步拆分为单帧与多帧的发送与接收。

2.1 PDU的发送

2.1.1 单帧PDU发送

其发送步骤为:
1)PduR调用CanTp接口,请求进行单帧数据传输;
2)CanTp调用PduR接口Copy数据,并调用CanIf接口发送数据
在这里插入图片描述
对应时序图:
在这里插入图片描述

2.1.2 多帧PDU发送

其发送步骤为:
1)PduR调用CanTp接口,请求进行多帧数据传输;
2)CanTp调用PduR接口Copy数据,并调用CanIf接口发送首帧数据
3)CanTp再次调用PduR接口Copy数据,并调用CanIf接口发送连续帧数据,直到全部数据发送结束。

在这里插入图片描述
对应时序图:
在这里插入图片描述

2.2 PDU的接收

2.2.1 单帧PDU接收

其发送步骤为:
1)CanIf调用CanTp接口(CanTp_RxIndication)通知数据接收;
2)CanTp调用PduR接口(PduR_CanTpStartOfReception)通知数据开始接收;
3)CanTp将PDU数据从CanIfCopy到CanTp;
4)CanTp将PDU数据去除包头后从CanTp Copy到PduR;
在这里插入图片描述
对应时序图:
在这里插入图片描述

2.2.2 多帧PDU接收

其发送步骤为:
1)CanIf调用CanTp接口(CanTp_RxIndication)通知数据接收;
2)CanTp调用PduR接口(PduR_CanTpStartOfReception)通知数据开始接收;
3)CanTp将首帧PDU数据从CanIfCopy到CanTp;
4)CanTp将首帧PDU数据去除包头后从CanTp Copy到PduR;
5)CanTp将连续帧PDU数据从CanIfCopy到CanTp;
6)CanTp将连续帧PDU数据去除包头后从CanTp Copy到PduR;
在这里插入图片描述
对应时序图:
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Autosar汽车电子进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值