从代码角度看CAN网络层协议 ISO 15765-2
Posted 蚂蚁小兵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从代码角度看CAN网络层协议 ISO 15765-2相关的知识,希望对你有一定的参考价值。
相关文章
从代码角度看CAN网络层协议 ISO 15765-2 (二)
前言
-
测试软硬件环境:
CANoe 11 SP2
Win10 X64
ISO 15765-2 -2016 -
由于不同类型的总线运载数据的能力不同,比如
CAN
总线协议(包括CAN-FD)最多携带64个字节有效数据;Flexray
总线协议单帧做多携带254个字节有效数据;车载以太网???
而应用层ISO-14229规范定义单个功能请求传输可以大于4095
个字节。所以来自应用层
的数据在经过传输层
,怎么将这些数据分解成多帧,以适应不同总线类型协议,这便是传输层协议要做的事。
比如ISO 15765-2
规范了CAN
总线类型TP层的传输协议, 而ISO-10681-2
则定义了Flexray
总线协议的传输层规范,今天我们要说的是ISO 15765-2
-
下图是数据传输的七层结构,ISO 15765-2所在的层级如下图
文章目录
网络层协议数据报文的格式组成
ISO 15765-2
的前面的章节是一些服务原语,理解起来晦涩,从第九章节开始是协议数据单元的格式
N_PDU 的解释:
- N 是NetWork的缩写,即网络层的意思。
- PDU:Protocal data unit 即协议数据单元
这种命名方式是标准的惯例,比如 ISO-14229 是 应用层(application),所以也会用A_PDU 表示
Address information(N_AI)
地址信息可以参考下图:
Protocal control information (N_PCI) 协议控制信息
在TP层 ,收到的PDU根据 N_PCI信息 判断PDU类型
如下图,这张图应该是ISO-15765的核心了,当应用层数据多时,TP层会把长报文进行分段传输,根据分段的类型分为4种类型:首帧,流控帧,连续帧,最后帧。
下图的信息比较丰富,标准CAN 的 N_PCI的高4位决定 PDU的类型。后面会逐一讨论
SF 单帧
如上面的Table 9图,单帧根据CAN DL 的长度不同,N_PCI占用的字节数不同,
CAN_DL ≤ 8 (标准CAN):高4位表示 N_PCIType ,低4位表示数据长度,可以最多携带 CAN_DL - 1个数据
CAN_DL > 8 (CAN-FD):第一个字节都表示 N_PCIType ,第二个字节表示数据长度,可以最多携带 CAN_DL - 2个数据
FF 首帧
如上面的Table 9图,首帧根据CAN DL 的长度不同,N_PCI占用的字节数不同,
CAN_DL ≤ 4095 : 需要2个字节表示N_PCI
CAN_DL > 4095 : 需要6个字节表示N_PCI
CF 连续帧
如上面的Table 9图,高4位表示N_PCIType ,低4位表示序列号
- 序列号从0开始增加(第一个0在首帧里面)
- 紧接着流控帧的第一帧连续帧,序列号应该是1
- 序列号增加到15的时候,下一帧序列号是0
FC 流控帧
FlowControl用来调整发送端到接收端网络层的能力。这种流量控制方案允许使用诊断网关和子网
如上面的Table 9图,
第一个字节高4位表示N_PCIType ,低4位表示流控状态 FS ,表示接收方的状态,是否允许继续发送
第二个字节Block Size (BS) 表示 接收方允许发送方在等待授权之前发送的n_pdu的最大数量,以继续发送以下的n_pdu
第三个字节SeparationTime minimum (STmin)表示 发送端在两个CF n_pdu发送之间等待的最小时间。
FS 流控状态
FS是0,表示接收方一切正常,发送方可以继续发送连续帧
FS是1,表示接收方有点吃不消,发送方等一会(一个N_BS timer时间)再发送连续帧
FS是2,表示接收方缓存炸了,发送方你要终止发送
Block Size (BS)
告知发送方可以连续发送多少帧连续帧,一般情况设置为0,表示你发送方有多少数据,我接收方照单全收
如果接收方接受能力不足,可以设置BS为具体值。
STmin 连续帧传输时间间隔
告知发送方 连续帧传输时间间隔 设置为STmin
网络层定时参数(NetWork layer timing)
N_As超时:发送方没有及时发送N_PDU。
N_Ar超时:接收方没有及时发送N_PDU。
N_Bs超时:发送方没有接收到流控帧。
N_Cr超时:接收方没有收到连续帧。
N_Br超时:接收方没有发出流控帧。
N_Cs:即STmin,发送两个连续帧需要等待的最短时间。
总结
本章博客
- 要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
以上是关于从代码角度看CAN网络层协议 ISO 15765-2的主要内容,如果未能解决你的问题,请参考以下文章