文章目录
- 简介
- 结构格式
- 分类
- 1.单帧SF
- 2.首帧FF
- 3.流控帧FC
- 4.连续帧CF
- 总结
->返回总目录<-
简介
网络层协议数据单元(N_PDU,Network_Protocol Data Unit)。可以理解成是一种规范协议。而汽车电子中通信的报文格式就是以PDU为传输单元,它规定了报文的一些限制要求。
结构格式
N_PDU 包含 N_AI,N_PCI,N_Data。分别是地址信息,协议控制信息和数据。
分类
网络层对于下面四种类型的数据单元是通过N_PCI进行区分的。每一个N_PDU都只有一个N_PCI。
对于CAN诊断来说,我们完全可以通过识别每条CAN帧数据域的首个字节来确定它属于四种类型中的哪类,N_PCI是最为核心的信息。
1.单帧SF
0X 单帧(SF): 首个字节为0(4bit)+ Data Length(4bit),控制信息占用1个字节
举例: Data 02 10 01 00 00 00 00,02表示接收方应知晓,这一个单帧只有2个有效字节,后续的字节是自动填充的未使用字节。
参考下图,【02】:SF SingleFrame:0 DataLength:2
2.首帧FF
1X XX 首帧(FF): 前两个字节为1(4bit)+ Data Length(12bit),控制信息共占用2个字节。
举例:Data 10 1F 59 02 09 92 00 1C,0x1F表示,接收方应知晓,这一个多帧组合共有31个字节。
如下图,【10 1F】: 1表示FF; 01F表示数据长度31字节。(注: 首帧可以携带6字节的数据,下图中59 02 09 92 00 1C)
当传输数据为4095字节时,就是 【1F FF】,2的12次方
3.流控帧FC
3X 流控制帧(FC): 前三个字节为3(4bit)+流状态(FS,4bit)+块大小(BS,8bit)+最小间隔时间(STmin,8bit),控制信息共占用三个字节。
举例: Data 30 08 14 00 00 00 00 00,多帧发送方应知晓,这是一个流控帧,允许你方继续发送,允许一次发送CF的数量是8,上一个连续帧的确认接收(ACK)到新的连续帧开始发出的最小间隔时间为20ms。
Flow State 流状态 : 0为继续发送,Continue To Send(CTS),1为Wait(WT),2为Overflow(OVFLW)。
BS: 块大小,允许一次发送连续帧CF的个数。如果BS = 0,表示再无流控制,可无限制发送。
STmin: 上一个连续帧的确认接收(ACK)到新的连续帧开始发出的最小间隔时间
4.连续帧CF
2X 连续帧(CF): 第一个字节为2+SN(最多16个SN,溢出后从0开始重新计数),控制信息占用1个字节。
我们通常记首帧为0x20,之后的第一个连续帧自然是0x21,之后一直到0x2F,下一个是0x20,循环。
实际项目中如下图中的 【21】【22】 【23】 【24】
总结
感觉还不错,自己写了一遍,又加深了知识点的印象。正所谓复杂问题简单做,简单事情重复做,你就会成为专家!
->返回总目录<-