中国移动官方网站,湖南省建设厅城乡建设网站,在线定制网站官网,做请柬网站【车载开发系列】AutoSar中的CANTP 【车载开发系列】AutoSar中的CANTP 【车载开发系列】AutoSar中的CANTP一. CANTP相关术语二. CANTP相关概念1#xff09;单帧#xff1a;SF(Single Frame)2#xff09;首帧#xff1a;FF(First Frame)3#xff09;连续帧CF(Consecutive F…【车载开发系列】AutoSar中的CANTP 【车载开发系列】AutoSar中的CANTP 【车载开发系列】AutoSar中的CANTP一. CANTP相关术语二. CANTP相关概念1单帧SF(Single Frame)2首帧FF(First Frame)3连续帧CF(Consecutive Frame)4流控帧FC(Flow Control) 三. CANTP介绍四. CANTP的作用五. CANTP网络层参数1N_As与N_Ar2N_Bs3N_Br4N_Cs5N_Cr6STmin7BSBlock Size 六. CANTP模块的接口1CanTp_Transmit()函数2CanTp_CancelTransmit()函数3CanTp_Init()函数4CanTp_Shutdown函数2receiveData()函数 七. CANTP提供服务的总结 一. CANTP相关术语
PDUProtocol Data Uint协议数据单元 N-PDUNetwork Protocol Data Uint网络层协议数据单元 I-PDUInteraction Protocol Data Uint交互层协议数据单元 N-SDUNetwork Service Data Uint网络服务数据单元 L-PDU:Data Link Layer PDU一个或多个I-PDU组包成一个L-PDU FSFlow Status流状态 BSBlock Size数据块的大小 STminSeparation Time Min最小间隔时间 SNSequence Number 帧序列号 FF_DLFrist Frame Data Length首帧数据长度 SF_DLSignle Frame Data Length单帧数据长度 SDUService 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/
1N_As与N_Ar
N_As : Sender.req-Sender.con Sender任意帧类型从请求发送到发送完成的时间间隔。 N_Ar :Receiver.Req-Receiver.con , Receiver任意帧类型从请求发送到发送完成的时间间隔。
2N_Bs
N_Bs可理解为Sender 从XXX到收到流控帧 的时间。XXX分为三种情况 1.Sender从发送完首帧FF到收到流控帧的时间 2.Sender从发送完连续帧CF到收到流控帧的时间 3. Sender从收到流控帧FC状态为Wait到收到下一个流控帧的时间
3N_Br
N_Br可理解为Receiver 从XXX到请求发送流控帧的时间,XXX分为三种情况 1.Receiver 从收到首帧FF到请求发送流控帧的时间 2.Receiver 从收到连续帧CF到请求发送流控帧的时间 3.Receiver 从发送完流控帧FC(状态为Wait) 到请求发送下一个流控帧的时间
4N_Cs
N_Cs可理解为 Sender从XXX 到请求发送连续帧CF的时间,XXX分为两种情况1.Sender从收到流控帧FC到请求发送连续帧CF 的时间 2.Sender从发送完连续帧CF到请求发送下一包连续帧CF 的时间
5N_Cr
N_Cr 可理解为 Receiver 从XXX到收到下一个连续帧CF 的时间,XXX分为两种情况 1.Receiver 从发送完流控帧FC到收到连续帧CF 的时间 2.Receiver 从收到连续帧CF到收到下一包连续帧CF 的时间
6STmin
STmin 是Sender发送两包连续帧之间的最小间隔单位为ms。
7BSBlock Size
Block Size 是 Sender 收到一包流控帧后发送连续帧的个数0代表无限制收到流控帧后可以一直发连续帧直到数据发送完毕。
六. CANTP模块的接口
作用与功能CAN Tp模块用于处理分包数据传输和错误检测在诊断过程中使用频率较高。 CanTp模块提供用于分割、流控传输和消息重新组装的服务。它的主要目的是发送和接收可能适合也可能不适合一个CAN帧的消息。不适合一个CAN帧的消息被分割成多个部分这样每个部分都可以在一个CAN帧中传输。
1CanTp_Transmit()函数
CAN Tp模块通过此接口将数据进行分包并传输。它是异步函数。在传输请求被接受后无论N-SDU传输是否成功被完全处理CanTp模块都将通知其上层。
2CanTp_CancelTransmit()函数
传输取消特性允许上层取消正在进行的传输。 使用案例:由于接收到另一个具有更高优先级的诊断协议而取消诊断传输。CanTp_CancelTransmit()被调用之后该连接上的传输将被中止将在接收端产生一个超时错误。
3CanTp_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但发送和接收均未进行)。
4CanTp_Shutdown函数
它用来正确停止CanTp模块。
2receiveData()函数
CAN Tp模块通过此接口接收传输的数据并进行错误检测。
七. CANTP提供服务的总结
1分割发送方向上的数据 2重组接收方向上的数据 3控制数据流 4检测分割会话中的错误 CanTp模块提供用于分割、流控传输和消息重新组装的服务。它的主要目的是发送和接收可能适合也可能不适合一个CAN帧的消息。不适合一个CAN帧的消息被分割成多个部分这样每个部分都可以在一个CAN帧中传输。