文章目录
1. 单帧和多帧
2. 传输层协议控制信息(N_PCI)字段
3. 多帧时序
4. 时间参数
5. 常见缩写
6. ETAS工具链下的AUTOSAR配置
1. 单帧和多帧
CAN-TP帧类型可分为 单帧和多帧。
单帧(SF) :Single Frame,数据长度小于等于7个Byte(标准CAN是7Byte,CAN-Fd是63Byte)时,使用单帧进行传输
多帧可分为 首帧(FF)/流控帧(FC)/连续帧(CF),数据长度大于等于8个Byte(标准CAN是8Byte,CAN-FD是64Byte)时,使用多帧进行传输
首帧(FF):First Frame
流控帧(FC): Flow Control
连续帧(CF): Consecutive Frame
2. 传输层协议控制信息(N_PCI)字段
SequenceNumber(SN)的取值:
0~F;
通常,首帧的SN值为0(虽然首帧数据中没用SN,但依然将SN值当作是0)。首帧后的第一个连续帧的SN值为1,之后每遇到一个连续帧,SN值加1。当SN=15后再遇到一个连续帧时,其值变为0,依次类推。SN的值不受流控帧(FC)的影响;
FlowStatus(FS)的取值:
0 -> 继续发送;
1 -> 等待;
2 -> 溢出;
3~F -> 保留字段;
BlockSize(BS)的取值:
0 -> 接收方向发送端告知:接收端后续将不会再发送流控帧响应,发送端也不需要等待流控帧,发送端直接发送余下的连接帧数据;
01~FF -> 接收方向发送端告知:接收端能接收的连续帧大小,单位:字节;
SeparationTime minimum(STmin)的取值:
00~7F -> 0~127毫秒;
80~F0 -> 保留字段;
F1~F9 -> 100~900微秒;
FA~FF -> 保留字段;
3. 多帧时序
Sender -> 发送首帧
Receiver -> 回复流控帧
Sender -> 发送连续帧(根据流控帧确认发送连续帧的间隔和次数)
Receiver -> 收到指定数量的连续帧后,再次回复流控帧
Sender -> 发送连续帧(根据流控帧确认发送连续帧的间隔和次数)
4. 时间参数
传输层:
缩写 | 解释 | BS | ECU发送流控帧后,Tester被允许发送连续帧最大帧数目 | STmin | ECU发送流控帧后,Tester被允许发送连续帧最大帧数目 |
网络层:
缩写 | 解释 | N_As | Tester传输CAN数据帧至ECU的最大时间 | N_Bs | Tester首帧发送成功后到流控帧接收成功的最大时间 | N_Cs | Tester在接收流控帧后到发送连续帧的最大时间 | N_Ar | ECU传输流控帧至Tester的最大时间 | N_Br | ECU接收到首帧到开始发送流控帧的时间 | N_Cr | ECU成功发送流控帧后到收到连续帧的最大时间 |
会话层:
缩写 | 解释 | S3_Tester | Tester为了保持一个ECU或者多个ECU节点同时保持在非默认会话下的时间间隔 | S3_Sever | ECU未接收到任意诊断报文时维持在非默认会话下的时间间隔 |
应用层:
缩写 | 解释 | P2_Client | Tester成功发送完请求消息后等待服务器响应超时设置 | P2*_Client | Tester接收到否定响应码为0x78的否定响应后等待ECU发送响应时的增强型超时设置 | P2_Sever | ECU收到请求后发出响应的实际时间 | P2*_Sever | ECU发送0x78否定响应到发出响应的实际时间 | P3_ClientPyh | Tester在收到物理寻址的肯定响应下允许发送下一条物理寻址请求的最小时间间隔 | P3_ClientFun | Tester在收到功能寻址的肯定响应下允许发送下一条功能寻址请求的最小时间间隔 |
N_Ar:network layer timing parameter Ar
N_As:network layer timing parameter As
N_Br:network layer timing parameter Br
N_Bs:network layer timing parameter Bs
N_Cr:network layer timing parameter Cr
N_Cs:network layer timing parameter Cs
N_Data:network data
N_PCI:network protocol control information
N_PCItype:network protocol control information type
N_PDU:network protocol data unit
N_SA:network source address
N_SDU:network service data unit
N_TA:network target address
N_TAtype:network target address type
N_USData:network layer unacknowledged segmented data transfer service name
NWL:network layer
● 发送方:
– N_As:从数据发送到数据被确认发送的最大间隔时间,如果超过这个时间则中断发送。
– N_Bs:从数据确认发送到收到流控帧的最大间隔数据,如果超过这个时间则中断发送。
– N_Cs:从流控帧接收或CF确认发送到数据请求发送成功的最大时间间隔,如果超过这个时间则中断发送。
● 接收方:
– N_Ar:从数据(FC)请求发送到数据发送成功的最大数据间隔,如果超过这个时间则中断接收。
– N_Br:从FF或者CF确认发送到FC请求的最大时间间隔,如果超过这个时间则中断接收。
– N_Cr:从CF接收到下一个CF接收或者FC接收的最大时间间隔,如果超过这个时间则中断接收。
对于OEM配置,一般N_As为0.07,N_Bs为0.15,N_Cs为0.05,N_Ar为0.07,N_Br为0.05,N_Cr为0.15。
BS:Block Size即块大小,收到一帧流控帧后发送连续帧的最大数量,用来限制连续发送连续帧的最大数量,如为0则没有限制可以一直发,直到数据发送完毕。
STmin:SeparationTime minimum即连续帧发送的最小时间间隔,代表了接收方的接收能力。
5. 常见缩写
DLC(Data Length Code) 数据长度码(CAN PDU中描述SDU长度的部分)
Mtype 报文类型
N_AI 网络地址信息(见ISO 15765-2)
N_Ar 在接收端,CAN帧(任何N-PDU)的传输时间(见ISO 15765-2)
N_As 在发送端,CAN帧(任何N-PDU)的传输时间(见ISO 15765-2)
N_Br 直到传输下一个流控帧N-PDU的时间 (见ISO 15765-2)
N_Bs 接收到下一个流控帧N-PDU的时间(见ISO 15765-2)
N_Cr 接收到下一个连续帧N-PDU的时间(见ISO 15765-2)
N_Cs 传输下一个连续帧N-PDU的时间(见ISO 15765-2)
N_Data 传输层的数据信息
N_PCI 传输层的协议控制信息
N_SA 网络源地址(见ISO 15765-2)
N_TA 网络目标地址(见ISO 15765-2),
N_TAtype 网络目标地址类型(参见ISO 15765-2)
PDU (Protocol Data Unit) 协议数据单元。在分层系统中,X层的PDU包含该层的SDU与协议控制信息。(X)-PDU = (X)-SDU+(X)-PCI。X层的PDU为其下层X-1层的SDU,即(X)-PDU = (X-1)-SDU.
SDU (Service Data Unit) 服务数据单元。在分层系统中,由给定层的服务用户发送的一组数据,并将其传输给对等服务用户,同时保持语义不变
FS (Flow Status) 流状态
6. ETAS工具链下的AUTOSAR配置
CanTpConfig:
物理寻址接收相关配置:
功能寻址接收相关配置:
发送相关配置:
CanTpGeneral:
注意:
为了保证与所有上层关于帧数据长度的要求完全兼容(例如OBD要求数据长度始终设置为8字节,而UDS没有),填充激活可以在每个N-SDU的预编译时配置,通过使用CanTpRxPaddingActivation用于Rx N-SDU或CanTpTxPaddingActivation用于Tx N-SDU。
在填充和不填充模式下,CanTp模块只将使用过的数据字节传输到上层。
填充字节的值可以通过配置参数:
/AUTOSAR_CanTp/EcucModuleDefs/CanTp/CanTpGeneral/CanTpPaddingByte
进行配置。
点击上方☝️关注车端
转自汽车电子嵌入式侵删
本文来源于网络,原文链接:https://blog.csdn.net/PlutoZuo/article/details/135357824 |