【车载开发系列】AutoSar中的CANTP

【车载开发系列】AutoSar中的CANTP

一. CANTP相关术语

PDU(Protocol Data Uint)协议数据单元
N-PDU(Network Protocol Data Uint)网络层协议数据单元
I-PDU(Interaction Protocol Data Uint)交互层协议数据单元
N-SDU(Network Service Data Uint)网络服务数据单元
L-PDU:Data Link Layer PDU,一个或多个I-PDU组包成一个L-PDU
FS(Flow Status)流状态
BS(Block Size)数据块的大小
STmin(Separation Time Min)最小间隔时间
SN(Sequence Number 帧序列号)
FF_DL(Frist Frame Data Length)首帧数据长度
SF_DL(Signle Frame Data Length)单帧数据长度
SDU:Service Data Unit服务数据单元。

二. CANTP相关概念

1)单帧:SF(Single Frame)

用于发送单个CAN帧即可发送完成的数据;数据长度小于等于7个Byte(标准CAN是7Byte,CAN-Fd是63Byte)时,使用单帧进行传输。

2)首帧:FF(First Frame)

用于发送较大数据情况下的第一帧;

3)连续帧CF(Consecutive Frame)

用于发送较大数据情况下首帧外的其余部分

4)流控帧:FC(Flow Control)

接收后用于调节数据发送速度。

三. CANTP介绍

CANTP是CAN Transport Layer的简称。是基础软件通讯模块中最重要的模块之一。
CanTp是AUTOSAR通信栈中负责网络解析的模块,主要负责接收CanIf层传输的N-PDU数据解析成I-PDU数据,并发送给PDUR模块。
在这里插入图片描述
AUTOSAR CAN传输层规范是基于汽车领域最常用的国际标准ISO15765。ISO15765描述了两个适用的CAN传输层规范:OEM增强型诊断:采用ISO 15765-2;
OBD诊断:采用ISO15765-4。

四. CANTP的作用

CANTP模块的主要作用是对CAN I-PDU进行分段和重新组装,使得I-PDU的长度不大于8个字节,对CAN FD而言,CAN I-PDU不大于64个字节。
CANTP主要解决了数据多帧传输的问题,由于CAN总线每次只能发送8个字节的数据,因此对于多帧数据,需要拆分成多个块传输。无论是单帧还是多帧传输,CanTp一共提供四种帧进行数据传输:单帧,首帧,连续帧,流控帧。

五. CANTP网络层参数

CAN-TP 网络层参数有N_As/N_Ar/N_Bs/N_Br/N_Cs/N_Cr/STmin/BS/

1)N_As与N_Ar

N_As : Sender.req->Sender.con ,Sender任意帧类型从请求发送到发送完成的时间间隔。
N_Ar :Receiver.Req->Receiver.con , Receiver任意帧类型从请求发送到发送完成的时间间隔。

2)N_Bs

N_Bs可理解为Sender 从XXX到收到流控帧 的时间。XXX分为三种情况
1.Sender从发送完首帧(FF)到收到流控帧的时间
2.Sender从发送完连续帧(CF)到收到流控帧的时间
3. Sender从收到流控帧(FC)(状态为Wait)到收到下一个流控帧的时间

3)N_Br

N_Br可理解为Receiver 从XXX到请求发送流控帧的时间,XXX分为三种情况
1.Receiver 从收到首帧(FF)到请求发送流控帧的时间
2.Receiver 从收到连续帧(CF)到请求发送流控帧的时间
3.Receiver 从发送完流控帧(FC)(状态为Wait) 到请求发送下一个流控帧的时间

4)N_Cs

N_Cs可理解为 Sender从XXX 到请求发送连续帧(CF)的时间,XXX分为两种情况1.Sender从收到流控帧(FC)到请求发送连续帧(CF) 的时间
2.Sender从发送完连续帧(CF)到请求发送下一包连续帧(CF) 的时间

5)N_Cr

N_Cr 可理解为 Receiver 从XXX到收到下一个连续帧(CF) 的时间,XXX分为两种情况
1.Receiver 从发送完流控帧(FC)到收到连续帧(CF) 的时间
2.Receiver 从收到连续帧(CF)到收到下一包连续帧(CF) 的时间

6)STmin

STmin 是Sender发送两包连续帧之间的最小间隔,单位为ms。

7)BS(Block Size)

Block Size 是 Sender 收到一包流控帧后,发送连续帧的个数,0代表无限制,收到流控帧后可以一直发连续帧,直到数据发送完毕。

六. CANTP模块的接口

作用与功能:CAN Tp模块用于处理分包数据传输和错误检测,在诊断过程中使用频率较高。
CanTp模块提供用于分割、流控传输和消息重新组装的服务。它的主要目的是发送和接收可能适合也可能不适合一个CAN帧的消息。不适合一个CAN帧的消息被分割成多个部分,这样每个部分都可以在一个CAN帧中传输。

1)CanTp_Transmit()函数

CAN Tp模块通过此接口将数据进行分包并传输。它是异步函数。在传输请求被接受后,无论N-SDU传输是否成功被完全处理,CanTp模块都将通知其上层。

2)CanTp_CancelTransmit()函数

传输取消特性允许上层取消正在进行的传输。
使用案例:由于接收到另一个具有更高优先级的诊断协议而取消诊断传输。CanTp_CancelTransmit()被调用之后,该连接上的传输将被中止,将在接收端产生一个超时错误。

3)CanTp_Init()函数

函数CanTp_Init初始化模块的所有全局变量,并将所有传输协议连接设置为CANTP_ON的子状态,在此状态下,既不进行分段发送,也不进行分段接收(Rx线程处于CANTP_RX_WAIT状态,Tx线程处于CANTP_TX_WAIT状态)。
成功初始化后,CanTp模块将变为内部状态CANTP_ON。只有当CanTp处于CANTP_ON状态时,CanTp模块才会执行分段和重组任务。CanTp模块上电后处于CANTP_OFF状态。
如果CanTp模块在处于全局状态CANTP_ON时调用CanTp_Init函数,则CanTp_Init函数将模块返回到Idle状态(state = CANTP_ON,但发送和接收均未进行)。

4)CanTp_Shutdown函数

它用来正确停止CanTp模块。
在这里插入图片描述

2)receiveData()函数

CAN Tp模块通过此接口接收传输的数据并进行错误检测。

七. CANTP提供服务的总结

1)分割发送方向上的数据
2)重组接收方向上的数据
3)控制数据流
4)检测分割会话中的错误
CanTp模块提供用于分割、流控传输和消息重新组装的服务。它的主要目的是发送和接收可能适合也可能不适合一个CAN帧的消息。不适合一个CAN帧的消息被分割成多个部分,这样每个部分都可以在一个CAN帧中传输。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AUTOSARCANtp是指CAN Transport Layer,位于PDU Router和CAN Interface之间,是AUTOSAR基础软件通信的重要模块之一。它主要解决了CAN总线数据多帧传输的问题。对于多帧数据,由于CAN总线每次只能发送8个字节的数据,因此需要将数据拆分成多个块进行传输。CANtp提供了四种帧进行数据传输,包括单帧、首帧、连续帧和流控帧。CANtp的设计目标是实现高效可靠的数据传输,并确保数据的完整性和正确性。123 #### 引用[.reference_title] - *1* [Autosar实践-CANTp](https://blog.csdn.net/qq_41908302/article/details/130544983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [AUTOSAR_CanTp](https://blog.csdn.net/qq_25920091/article/details/104148328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [AUTOSAR——CanTp](https://blog.csdn.net/qq_43552564/article/details/127086208)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进击的横打

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

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

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

打赏作者

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

抵扣说明:

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

余额充值