8 传输层协议 这一章一开始就重申了TP层的意义之所在: - 使收发的数据帧所包含的字节总数,扩容到4095个字节。
- 不管发送或接收是成功或是出错,都需要上报给应用层。
8.4 网络层协议数据单元 N_PDU网络层协议数据单元(N_PDU,Network_Protocol Data Unit)包含N_AI,N_PCI,N_Data。即地址信息,协议控制信息和数据。 注:这里的N_PCI全称为Protocol Control Information。 网络层协议数据单元(N_PDU)有四种类型,即单帧(SF)、首帧(FF)、连续帧(CF)、流控制帧(FC),用于建立对等实体间的通信。 8.5 N_PCI网络层对于这四种类型的数据单元是通过协议控制信息(N_PCI,Protocol Control Information)进行区分的。每一个N_PDU都只有一个N_PCI。 也就是说,对于CAN诊断来说,我们完全可以通过识别每条CAN帧数据域的首个字节来确定它属于四种类型中的哪类。 N_PCI是TP层最为核心的信息,是TP层区别于其他CAN总线抽象协议的、最为显著的特征。 以下说明仅以乘用车常用的常规寻址举例。 对于TP层来说,我们可以把报文分为单帧和多帧,单帧只有一种N_PCI,即单帧;多帧有三种N_PCI,即首帧、流控制帧、连续帧。代码实现中,主要的工作其实就在多帧的处理和对超时错误(Timeout)的处理上。 0X 单帧(SF,Single Frame):首个字节为0(4bit)+ Data Length(4bit),控制信息占用1个字节 举例:Data 02 10 02 55 55 55 55 55,02表示接收方应知晓,这一个单帧只有2个有效字节。后续的字节是自动填充的无效字节。
单帧PCI通常仅占用1个字节,其他是数据,所以可以后面可以跟着最多7个字节的数据1X XX 首帧(FF,First Frame):前两个字节为1(4bit)+ Data Length(12bit),控制信息共占用2个字节。 举例:Data 10 14 2E F1 90 01 02 03,0x014表示,接收方应知晓,这一个多帧组合共有20个字节。 首帧可以携带一个多帧报文的头部6个字节数据3X 流控制帧(简称流控帧,FC,Flow Control):前三个字节为3(4bit)+流状态(FS,4bit)+块大小(BS,8bit)+最小间隔时间(STmin,8bit),控制信息共占用三个字节。 举例:Data 30 00 14 AA AA AA AA AA,多帧发送方应知晓,这是一个流控帧,允许你方继续发送,CF数量无限制,上一个连续帧的确认接收(ACK)到新的连续帧开始发出的最小间隔时间为20ms。 Flow State 流状态:0为继续发送,Continue To Send(CTS),1为Wait(WT),2为Overflow(OVFLW)。 流控帧仅有3个字节的控制信息,无数据字节
|