相关文章

从代码角度看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所在的层级如下图


文章目录

  • 相关文章
  • 前言
    • 网络层协议数据报文的格式组成
    • Address information(N_AI)
    • Protocal control information (N_PCI) 协议控制信息
      • SF 单帧
      • FF 首帧
      • CF 连续帧
      • FC 流控帧
        • FS 流控状态
        • Block Size (BS)
        • STmin 连续帧传输时间间隔
    • 网络层定时参数(NetWork layer timing)
  • 总结


网络层协议数据报文的格式组成


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 (二)中通过代码演示的方式让大家更加通俗的理解这些参数。

  • 要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
  • 如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。

从代码角度看CAN网络层协议 ISO 15765-2(一)相关推荐

  1. 从代码角度看CAN网络层协议 ISO 15765-2 (二)

    ont color=orange>

  2. js随机跳转域名_从代码角度看各类子域名收集工具

    作者:w7ay @ 知道创宇404实验室 开源的域名收集工具有很多,本文会从代码的角度去看各类开源的域名收集工具的技术特点,以及各有哪些优缺点,来帮助大家,在合适的时候选择合适的利用工具. 这里选取了 ...

  3. TLS1.2的握手过程——从代码角度

    代码角度看TLS1.2握手过程    -- 以 ECDHE_RSA_WITH_AES_128_GCM_SHA256 密码套件为例 名词解释:密码套件--SSL握手过程联合使用了一系列加密&摘要 ...

  4. 基于CAN总线的汽车诊断协议UDS (网络层 ISO 15765)

    上个月一个同事Z跳槽去了德赛西威,Z之前是完全不懂诊断的MCU工程师,去德赛后做诊断开发,让我感觉到,汽车嵌入式行业,CAN和诊断工程师还是比较稀缺的.之前我和Z共同负责一个项目,我负责CAN网络和诊 ...

  5. 从JVM的角度看JAVA代码--代码优化

    从JVM的角度看JAVA代码–代码优化 从JVM的角度看JAVA代码代码优化 片段一重复计算 片段二重复比较 在JVM加载优化为class文件,运行class文件时,会有JIT(Just-In-Tim ...

  6. 从JVM的角度看JAVA代码1

    从JVM的角度看JAVA代码1 从JVM指令的角度来分析++,--问题可以分析的非常透彻,这里给出两个案例.通过这两个案例就能知道JAVA中前++和后++的原理了,同时也可以推论出--的情况. pub ...

  7. 从软件工程角度看大前端技术栈

    从软件工程角度看大前端技术栈 优秀人才不缺工作机会,只缺适合自己的好机会.但是他们往往没有精力从海量机会中找到最适合的那个. 100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「 ...

  8. 从全生命周期管理角度看大数据安全技术研究

    从全生命周期管理角度看大数据安全技术研究 李树栋1,2, 贾焰2, 吴晓波3, 李爱平2, 杨小东4, 赵大伟5 1. 广州大学网络空间先进技术研究院,广东 广州 510006 2. 国防科技大学计算 ...

  9. 从平台角度看物联网体系架构

    从平台角度看物联网体系架构 一.前言 万物互联时代已经到来,2020年全球物联网连接数将达到300亿个.中国的物联网市场更是飞速发展,随着许多新商业模式的涌现,市场将迎来井喷期.预计2020年物联网连 ...

  10. 一文看懂PPP协议——PPP协议简介

    今天给大家介绍一下PPP协议的相关内容,文章浅显易懂,特别适合0基础同学.本文主将主要从PPP概述.PPP链路建立过程和PPP认证三个角度对PPP协议进行讲解. 一.PPP概述 PPP,point-t ...

最新文章

  1. Java线程之join
  2. 简单计算器的设计java_(基于java的简易计算器的设计.doc
  3. 如何系统地理解「交易平台」?
  4. linux版_巧用linux版powershell,管理linux下的docker
  5. 镜像电流源特点_9000大型地网变频大电流接地特性测量系统介绍
  6. 解决centos6.5出现-bash: mysql: command not found的方法
  7. Angular应用 vendor.js里的magic number 16384是什么含义
  8. win10电脑黑屏只有鼠标箭头_win7开机黑屏只有鼠标怎么办,我来教你解决
  9. mathematica在linux上运行,Mathematica在Ubuntu中的表现及修正
  10. React.js 官网入门教程 分离文件 操作无法正常显示HelloWord
  11. 正月十五元宵节中国风海报PSD分层模板找灵感!
  12. Centos7.9安装Mysql5.7.32_mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar_亲测成功---Linux工作笔记041
  13. SharePoint 2013必备组件离线包安装:AppFabric无法安装问题解决
  14. win10+cuda10.0.130+cudnn7.5.1+tensorflow-gpu 1.13.1+anaconda3+keras+pycharm2018
  15. 清华成北京赛赢家,旷视唐文斌分享本质创业 | 联想高校AI精英挑战赛
  16. vue中常用的事件修饰符
  17. SVM笔记(一)硬间隔SVM
  18. centos普通用户和root用户之间相互切换
  19. devgis分享 只分享有价值的东西!http://download.csdn.net/user/devgis
  20. 【C语言】VSCode配置C语言开发环境(详细图文)

热门文章

  1. 基于halcon的颜色识别---杜邦线识别
  2. 怎么看服务器cpu温度命令_ubuntu 命令行下查看及监测CPU温度的方法
  3. VBA 字典使用小结:关键字循环
  4. VBA字典(dictionary)
  5. AT91SAM9260搭建LINUX操作系统
  6. html视频怎么添加封面,快影视频封面怎么添加文字标题
  7. 在Excel如何根据内容自动调整行高列宽
  8. BZOJ 1213 HNOI2004 高精度开根 二分+高(Py)精(thon)度
  9. android锁屏事件监听,Android 监听锁屏、解锁、开屏 操作
  10. 使用layer 弹出对话框 子父页面相互参数传递 父页面获取子页面参数实例