CAN-TP 层位于 UDS诊断层和CAN Driver层中间,主要作用是:当CAN数据长度超过8Byte(CAN-FD为64Byte)时,对CAN数据进行分包和解包。
网络层定时参数定义了N_As、N_Ar、N_Bs、N_Br、N_Cs、N_Cr六个参数,各个参数的含义下两张图可以完整的体现,以下会对各个参数进行详细说明。
首先需要明确几个概念
- N_USData : 网络层数据
- L_Data : 数据链路层数据
- .req : 帧发送开始请求
- .con : 帧发送完成确认
- .ind : 帧接收完成指示
※ Send 侧的 .con 和Receiver侧的 .ind是一个时间点。
注意:上位机在tp层通信时作为Sender即发送方,故以下参数后缀为s的对Sender有效,后缀为r的应在下位机即BootLoader中进行设置。
下面对每个参数进行详细解释:
1. N_As/N_Ar
1.1. N_As
Sender.req->Sender.con ,Sender 任意帧类型 从请求发送到发送完成 的时间间隔,任意帧类型包括:单帧、首帧、连续帧、流控帧,Sender发送的报文帧不包含流控帧。
根据需要,N_As应设置为70ms,以下为上位机源码:
uint n_as = 0x70000; //将N_As参数设置为70ms,单位为μs
cantp_status status = CanTpApi.SetValue_2016(
(cantp_handle)Channel,cantp_parameter.PCANTP_PARAMETER_TIMEOUT_AS,
ref n_as, (uint)Marshal.SizeOf(n_as)); //将70ms写入
由于N_As为最大超时时间,这里的波形图为发送方发出的N_PCI(Protocol Control Information,协议控制信息)
- 单帧
- 首帧
- 连续帧
1.2. N_Ar
Receiver.Req->Receiver.con , Receiver 任意帧类型 从请求发送到发送完成 的时间间隔,在上位机中设置无意义。
2. N_BS/N_Br
2.1. N_Bs
可理解为 Sender 从XXX 到 收到流控帧 的时间,XXX分为三种情况:
① Sender 从 发送完首帧(FF)到 收到流控帧 的时间
② Sender 从 发送完连续帧(CF)到 收到流控帧 的时间
③ Sender 从 收到流控帧(FC)(状态为Wait)到 收到下一个流控帧 的时间
在X1VCU诊断调查表中,N_Bs应设置为150ms,源码如下:
uint n_bs = 150000; //将N_Bs参数设置为150ms,单位为μs
status = CanTpApi.SetValue_2016(
(cantp_handle)Channel, cantp_parameter.PCANTP_PARAMETER_TIMEOUT_BS, ref n_bs, (uint)Marshal.SizeOf(n_bs));
由于N_Bs为最大超时时间,这里仅展示三种发送方发出的N_PDU,标号与三种情况说明一一对应:
① Sender 从 发送完首帧(FF)到 收到流控帧 的时间:302μs左右
② Sender 从 发送完连续帧(CF)到 收到流控帧 的时间:302μs左右
③ Sender 从 收到流控帧(FC)(状态为Wait)到 收到下一个流控帧 的时间:141ms左右
2.2. N_Br
可理解为 Receiver 从XXX 到 请求发送流控帧 的时间,XXX分为三种情况,在上位机中设置无意义。
① Receiver 从 收到首帧(FF)到 请求发送流控帧 的时间
② Receiver 从 收到连续帧(CF)到 请求发送流控帧 的时间
③ Receiver 从 发送完流控帧(FC)(状态为Wait) 到 请求发送下一个流控帧 的时间
3. N_CS/N_Cr
3.1. N_Cs
可理解为 Sender 从XXX 到 请求发送连续帧(CF) 的时间,XXX分为两种情况
① Sender 从 收到流控帧(FC)到 请求发送连续帧(CF) 的时间
② Sender从 发送完连续帧(CF)到 请求发送下一包连续帧(CF) 的时间
在需求中,N_Cs应设置小于70ms,源码如下:
uint n_cs = 0x01; //将N_Cs参数设置为1ms,单位为ms
cantp_status status = CanTpApi.SetValue_2016(
(cantp_handle)Channel, cantp_parameter.PCANTP_PARAMETER_SEPARATION_TIME_TX, ref n_cs, (uint)Marshal.SizeOf(n_cs));
在逻辑分析仪中,N_Cs表现为以下两种情况:
① Sender 从 收到流控帧(FC)到 请求发送连续帧(CF) 的时间
② Sender从 发送完连续帧(CF)到 请求发送下一包连续帧(CF) 的时间
3.2. N_Cr
可理解为 Receiver 从XXX 到 收到下一个连续帧(CF) 的时间,XXX分为两种情况,在上位机设置该参数无意义。
① Receiver 从 发送完流控帧(FC)到 收到连续帧(CF) 的时间
② Receiver 从 收到连续帧(CF)到 收到下一包连续帧(CF) 的时间