本文分享CAN / CAN FD在TP层传输规则详解,因为是从个人角度解读协议,有不精准之处,希望指出。

CAN/CAN FD总线TP层映射到OSI计算机七层模型是在第三层和第四层:

对应CAN Frame数据域可携带的数据帧长度如下定义:

其中CAN ID标识这具体ECU的识别号,长度有11位和29位之分,具体看OEM在诊断需求规范中定义。数据库携带数据长度看是Classical CAN还是CAN FD。前者数据域长度是8 bytes。CAN FD数据域长度看OEM需求,范围在8 bytes---64 bytes,当然长度也不是任意选取,可参看如下表格:

超过8 bytes后,长度可按照表格中长度定义。首先分享下经典CAN单帧和多帧传输数据。

一、 Classical CAN

当数据长度小于等于8 bytes(因为有PCI存在,实际有用的数据长度是7 bytes),使用单帧(Single Frame)可以发送数据:

当数据长度大于8 Bytes时,使用到TP中的多帧传输。相当于在数据传输过程中先对大于8 Bytes的数据进行解包---发送---组包,其中用到首帧(First Frame)、流控帧(Flow Control)、连续帧(Consecutive Frame)。在ISO 15765-2中对上述帧格式定义如下:

对数据帧中第一个Byte位不同数值定义不同帧类型:

1、 高4 bits为0标志是单帧,低4 bits值定义帧长度;

2、 对于单帧当数据长度大于8 bytes(适用于CAN FD),第一个byte数值为0,第二个byte数值标志着此单帧的数据长度;

3、 高4 bits为1标志是首帧,低4 bits位与第二个byte标志数据长度(FFF最大长度为4095 bytes),适用于多帧数据长度小于等于4095;

4、 当多帧数据长度大于4095 bytes时,高4 bits为1标志是首帧,低4 bits位与第二个byte数值设为0,Byte 3---byte 6标志此帧长度;

5、 高4 bits为2标志是连续帧,低4 bits标志连续帧的序列号;

6、 高4 bits为3标志是流控帧,低4 bits标识流控帧的状态(Flow State)。Byte 2为BS(Block Size),Byte 3为STmin 。其中FS、BS、STmin 具体含义如下:

· FS(FlowStatus)表示发送网络实体是否可以继续进行消息传输。具体含义在ISO 15765中有详细说明:

· BS(BlockSize)表示到下一个流控帧(FC)前发送连续帧的个数。在分段数据传输中,仅ConsecutiveFrames的最后一块可能小于BS帧数。

BS数值为0时,对于发送者(Sender)意味着接收者(Receiver)接下来不会发送流控帧,发送者将所有连续帧全部发送至接收者。

· STmin 为Separation Time minimum (STmin) parameter definition,这个参数由接收者定义,意思是两个连续帧之间的最小间隔时间。

整个多帧传输机制如下图所示:

二、CAN FD

CAN FD传输数据帧数据长度如下定义:

对于CAN FD中PCI信息占用Byte 1、Byte 2,因此在项目中定义的数据长度是包含这两个Bytes。对于CAN FD分单帧和多帧传输:

(1)、单帧传输的数据长度如协议中定义:

根据数据长度所在的范围,选择适用的长度。

(2)、对于多帧传输,定义好数据长度后,首帧以及紧接着的连续帧按照定义的数据长度传输,最后一帧连续帧按着上述Table 13传输。具体举例如下:

若定义数据场长度是 12 bytes,自己要传输的数据长度是 23 bytes,首帧和第一个后续帧,数据场长度是 12 bytes,最后一帧还是看剩余数据长度,按照Table 13 发送。

上述内容若有疑问,欢迎关注微信公众号:汽车控制器诊断技术 获取邮箱,以便沟通交流。

-----------------------------------------

作者简介 | 穿拖鞋的汉子

汽车电子工程师

来,每天进步一点点!

和tp数据库_CAN / CAN FD传输层(TP)详解相关推荐

  1. OSI七层模型详解物理层、数据链路层、网络层、传输层.....应用层协议

    OSI七层模型详解(物理层.数据链路层.网络层.传输层.....应用层协议与硬件) OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型 ...

  2. mysql入门优化_MySQL数据库:MySQL十大优化技巧详解

    本文主要向大家介绍了MySQL数据库的MySQL十大优化技巧详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是 ...

  3. OSI七层网络结构详解

    OSI模型的分层结构 OSI(Open System Interconnection),开放式系统互联参考模型 ,它把网络协议从逻辑上分为了7层.这7层分别为:物理层.数据链路层.网络层.传输层.会话 ...

  4. OSI七层模型详解——物理层

    在阅读本篇文章之前建议您了解信道及工作栈的基本原理,详情可以观看OSI七层模型详解--信道与协议栈 OSI模型概述 OSI全称为"Open System Interconnection&qu ...

  5. 数据库系统之:三级模式-两层映射详解

    数据库系统之:三级模式-两层映射详解 前言 一.数据库三大模式详解 1.外模式(反映了数据库系统的用户观) 2.概念模式(反映了数据库系统的整体观) 3.内模式(反映了数据库系统的存储观) 4.概念模 ...

  6. 初识网络基础《网络七层模型详解》

    坚持原创输出,点击蓝字关注我吧 图片来自网络 目录 一.初识网络基础 二.网络七层模型详解 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层 三.总结 一.初识网 ...

  7. SSL(Secure Sockets Layer)安全套接层协议详解

    SSL(Secure Sockets Layer)安全套接层协议详解 SSL简介 SSL历史发展 1.诞生 2.更名 3.发展 SSL协议结构 SSL协议结构详解 SSL警告协议 SSL修改密文协议 ...

  8. python更新数据库表的时间字段_python更新数据库中某个字段的数据(方法详解)

    连接数据库基本操作,我把每一步的操作是为什么给大家注释一下,老手自行快进. 请注意这是连接数据库操作,还不是更新. import pymysql #导包 #连接数据库 db = pymysql.con ...

  9. pytorch---之BN层参数详解及应用(1,2,3)(1,2)?

    BN层参数详解(1,2) 一般来说pytorch中的模型都是继承nn.Module类的,都有一个属性trainning指定是否是训练状态,训练状态与否将会影响到某些层的参数是否是固定的,比如BN层(对 ...

最新文章

  1. C#中TextBox只能输入数字的代码
  2. linux命令查看cpu负载,怎么使用Linux命令查看CPU使用率
  3. android NDK 在Ubuntu10.04开发环境的搭建
  4. linux 打开网页 用curl_linux终端模拟浏览器访问(curl)
  5. sed教程入门与实例练习(二)
  6. (60)FPGA比较器实现(function)
  7. 构建一个pool来管理无刷新页面的xmlhttp对象
  8. 各种品牌进入Bios方式
  9. 有没有简易的画图软件?这4款软件让画图更简单
  10. 浅析地理数据模型发展
  11. 排名前十的天使投资机构
  12. 适合运动的耳机有哪些、最好用的五款运动型耳机推荐清单
  13. Life feelings--13--青春不毕业,那些心里念念叨叨难以忘怀的记忆
  14. 关于微擎人人商城互动直播通信服务安装和启动教程记录
  15. 2021-01-27 大数据课程笔记 day7
  16. 数据可视化之excel和finebi报表实现对比
  17. System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 '***' 数据库不同。 (Microsoft.SqlServer.Smo)
  18. 浏览器的审查元素,这是一个神奇的玩意儿
  19. 电脑计算机工具计算,计算机的计算器在哪 自己的电脑上的计算器在哪里找
  20. php.ini配置中文详解

热门文章

  1. GPT3 api接口调用
  2. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
  3. Relay IR表示
  4. 数据、人工智能和传感器按COVID-19新冠流感排列
  5. CVPR2020:点云弱监督三维语义分割的多路径区域挖掘
  6. 客快物流大数据项目(六十二):主题及指标开发
  7. Redis持久化 - RDB和AOF
  8. ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法
  9. node.js实现国标GB28181流媒体点播(即实时预览)服务解决方案
  10. Eclipse使用Maven建立SSM多模块的项目