从代码角度看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,发送两个连续帧需要等待的最短时间。

在这里插入图片描述

在这里插入图片描述

总结

本章博客从ISO 15765-2 标准简要讲述CAN网络层多帧传输的重要参数和定义,我们接下来将在从代码角度看CAN网络层协议 ISO 15765-2 (二)中通过代码演示的方式让大家更加通俗的理解这些参数。

7

在这里插入图片描述

  • 要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
  • 如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
    18
  • 22
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ISO 15765-2是CAN网络层协议的一部分,它定义了CAN总线类型的传输协议。\[1\]该协议主要涉及多帧传输的重要参数和定义。它通过代码演示的方式帮助人们更好地理解这些参数。\[1\]ISO 15765-2与其他协议兼容,如ISO 15765-3、ISO 15765-4和SAE J1939-21。\[2\]在29位CAN标识符结构中,ISO 15765-2定义了25位编码和24位编码,用于确定CAN标识或CAN帧是J1939还是ISO 15765的。\[2\]对于汽车网络设计者来说,根据他们的需求和对SAE J1939和ISO 15765协议的使用,定制非诊断信息和相关的CAN标识是很重要的。\[2\]ISO 15765-2规范了CAN总线类型TP层的传输协议,它将应用层的数据分解成多帧,以适应不同总线类型协议。\[3\] #### 引用[.reference_title] - *1* *3* [从代码角度看CAN网络层协议 ISO 15765-2(一)](https://blog.csdn.net/qq_34414530/article/details/123610027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ISO15765-3/14229-2、3 UDSonCAN学习笔记](https://blog.csdn.net/weixin_49000276/article/details/121983863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁小兵

慢慢长夜磨一章好文章,费烟!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值