Can帧种类学习笔记

1. Can帧种类

        根据ISO-TP中的描述,Can帧主要分四类:单帧(Singal frame, SF),首帧(First frame, FF), 连续帧(Consecutive frame, CF), 流控帧(Flow control frame, FC);

Can帧种类学习笔记_第1张图片

        单帧:值为0,其长度可为8个字节(value值占1个字节 + 7个表示正常地址字节,一般我们遇到主要就是类型的)或7个字节(value值占1个字节 + 6个扩展地址字节);

Can帧种类学习笔记_第2张图片

        首帧:其值为1, 用于长的、已被分割的多帧消息包中。首帧包括整个包的数据长度,以及数据初始值;

        连续帧:其值为2,包含多帧消息包后续子序列的数据帧;

        流控帧:其值为3, 是由接收方在确认收到首帧(FF)后发起的响应。其约定了后续连接帧(CF)的传输参数;

Can帧种类学习笔记_第3张图片

2. 传输层协议控制信息(N_PCI)字段图

Can帧种类学习笔记_第4张图片

2.1 SequenceNumber(SN)的取值

        其取值范围为:0~F;

        通常,首帧的SN值为0(虽然首帧数据中没用SN,但依然将SN值当作是0)。首帧后的第一个连续帧的SN值为1,之后每遇到一个连续帧,SN值加1。当SN=15后再遇到一个连续帧时,其值变为0,依次类推。

        SN的值不受流控帧(FC)的影响;

2.2 FlowStatus(FS)的取值

        以下数据均为十六进制数。

                0 -> 继续发送;

                1 -> 等待;

                2 -> 溢出;

                3~F -> 保留字段;

2.3 BlockSize(BS)的取值

        以下数据均为十六进制数。

                0 -> 接收方向发送端告知:接收端后续将不会再发送流控帧响应,发送端也不需要等待流控帧,发送端直接发送余下的连接帧数据

                01~FF -> 接收方向发送端告知:接收端能接收的连续帧大小,单位:字节;

2.4 SeparationTime minimum(STmin)的取值

        此值由接收方定义,表示接收两个连续帧的时间间隔;

                00~7F -> 0~127毫秒;

                80~F0 -> 保留字段;

                F1~F9 -> 100~900微秒;

                FA~FF -> 保留字段;

3. 示例一

        以下图“密钥不正确”的操作为例说明“03 7F 27 35 AA AA AA AA”报文的含义。

Can帧种类学习笔记_第5张图片

        以上图来进行说明:

                报文:03 7F 27 35 AA AA AA AA, 其中:

                        A). 0表示这个是一个SF,即单帧;

                        B). 第二位非0,表示这是一个长度为8字节的报文;

                        C). 3表示,playload负载长度是3个字节;

                        D). 7F,是诊断负响应码标识;

                        E). 27表示的是诊断安全访问服务(SecuritySession);

                        F). 35为具体的负响应码,“非法密钥”;

                        G). AA 是位填充符;

        因此,03 7F 27 35 AA AA AA AA报文表示就是:密钥不正确;

4. 示例二

        下图为一个通过指定DID来读取相关数据的服务(诊断22服务)。

        Step1:

                0:表示单帧(SF);

                3:表示一个长度为8字节的报文,后面的负载长度是3个字节;

                22:表示诊断的22服务;

                F1 B3:指定的DID值

        Step2:

                1:表示首帧(FF);

                8:表示整个数据包的长度为8个字节;即:62 32 15 16 16 51 36 36

        Step3:

                3:表示流控帧(FC);

                0:表示流状态是继续发送帧(FlowStatus=0);

                8:表示buffer size为8个字节;

                14:表示连续帧的时间间隔为20ms;

        Step4:

                2:表示连续帧;

                1:序列号值为1(SequenceNumber=1),因为此帧是紧接首帧的连续帧;

                36 36 :报文数据;

                CC填充位;

你可能感兴趣的:(UDS诊断,mcu,网络协议)