ISO 11898-1:2015 协议详细定义了CAN网络报文的格式,包含了传统CAN与CANFD帧格式。CAN网络的帧类型共有4种,分别为数据帧、远程帧、错误帧、过载帧。本章将主要介绍CAN网络数据帧报文的格式,CAN网络中数据帧报文共有4种类型,分别为传统标准帧、传统扩展帧、CANFD标准帧、CANFD扩展帧,其数据帧报文的格式由如下字段域组成:

SOF:为帧的开头,该字段由一个显性位组成,当一个节点要往CAN总线上传输报文时,总线上的所有节点要同步该标志位当检测到SOF的上升边沿,这样就可以为后面的报文仲裁提供统一的时间参考。

Arbitration field:为仲裁域,用于判断总线上哪个报文可优先进行传输,当节点传输一个隐性位(该逻辑值为1)时,会采样CAN总线上的电平,如果采集到的为显性电平(该逻辑值为0),则该节点丢失仲裁,不能继续往总线上发送数据,因此ID越小的报文其优先级越高。该域主要由报文的ID组成。

Control field:为控制域,主要控制报文数据域数据的长度。

Data field:为数据域,主要由上层传输的数据组成。

CRC field:为CRC校验域,主要用于校验帧报文数据的正确性,对于CANFD报文而言,不同数据长度的报文其采取的CRC多项式是不一样的。

ACK field:为ACK域,主要用于告知发送方接收方已经正确收到该报文。

EOF:为帧的结束标志。

在进一步介绍CAN数据帧的格式时,有必要先介绍如下一些术语与缩写及说明:

SOF(Start Of Frame):帧开头,用于指示帧报文的开始。

CRC(Cyclic Redundancy Check):循环冗余校验,用于校验CAN报文的正确性。

ACK(Acknowledgement):应答,用于指示CAN报文已经被目标节点接收。

EOF(End Of Frame):帧结束,用于指示帧报文的结束。

RTR(Remote Transmission Request): 远程传输请求,该标志用于区分数据帧还是远程帧报文。

IDE(Identifier Extension) :ID扩展,该标志用于区分标准帧还是扩展帧报文。

FDF(FD Format indicator) :FD格式标志,该标志用于区分传统CAN还是CANFD报文。

RRS(Remote Request Substitution): 远程帧请求替代,该标志只用于CANFD报文中。

BRS(Bit Rate Switch): 位速率开关,该标志只用于CANFD报文中,用于CANFD报文中数据域传输速率的切换

ESI(Error State Indicator): 错误状态标志,该标志只用于CANFD报文中,用于指示节点的错误状态(error active或error passive)

SRR(Substitute Remote Request) 替代远程请求, 该标志只用于扩展帧中且只能传输隐性电平。

r0: 传统扩展帧里面的保留位。

res :FD 帧的保留位。

下面将介绍CAN数据帧的报文格式

传统标准数据帧的格式如下所示:

传统扩展数据帧的格式如下所示:

CAN FD标准数据帧(数据长度最大为16字节)格式如下所示:

CAN FD标准数据帧(数据长度为20~64字节)格式如下所示:

CAN FD扩展数据帧(最大字节长度为16)格式如下所示:

CAN FD扩展数据帧(数据长度为20~64字节)格式如下所示:

传统CAN报文与CANFD报文的DLC长度区别如下所示:

总结:

在笔者看来,传统CAN报文与CANFD报文的最大区别有2点,1、CANFD可以传输更多的数据,2、CANFD报文在传输中由2种传输速率完成传输,一种是标称的CAN总线速率(用于传输非数据域的字段),另一种是数据域传输速度(用于传输数据域的字段)。

CAN 与 CANFD数据报文格式解读相关推荐

  1. 序列化解决方案,就是采用二进制通信协议(数据报文格式)

    前言 所谓的序列化解决方案,就是对象和二进制互相转换的解决方案. 为什么要采用二进制呢?这里有几个点要理解清楚. 1.应用程序里的数据是对象 2.网络传输的过程中一直是二进制 不管有没有进行对象和二进 ...

  2. BLE数据报文格式解析

    1.数据链路层报文结构 报文的基础是数据链路层的报文,其它报文都是从此展开的,BLE数据链路层数据格式如下: 后期补充:在最新的core spec 5.2中,有1M PHY和2M的PHY,对应前导符变 ...

  3. 解析并符号 读取dll_风电场用风功率采集测风塔数据报文格式解析浅谈

    前段时间因为有点事情,好久没有更新了,非常对不住,感谢大家还在关注,下面是正文:看过我前面文章的朋友应该都知道,测风塔上送数据主要包括以下几个环境气象变量:风机轮毂处的风速.风向数据.以及其他不同高处 ...

  4. RLC协议简单理解1-RLC报文格式

    RLC协议简介 RLC(Radio Link Control)在无线协议架构中属于数据面协议中的一部分,数据传输从基站到终端的过程中,一共要经历UDP/SCTP-->SDAP/RRC--> ...

  5. (一)深入浅出TCPIP之理解TCP报文格式和交互流程

    目录 1.引入TCP: 1.1 TCP用户代码 2. TCP数据报文格式 3 TCP栈及socket的初始化

  6. http报文格式_理解数据通信协议的报文格式有何用?

    我们知道应用层的PDU是报文,最后变成物理层的比特流来传播,那么一个协议的报文格式同这个报文本身是什么关系?理解一个协议的报文格式有什么作用?简而言之,数据的发送方每层(从高层向底层下沉过程)做原始数 ...

  7. 4G、5G RLC AM模式数据和控制报文格式的区别

    如下分别为LTE的初传.重传报文和NR的AMD报文格式 LTE/NR报文格式: SN号, RLC PDU的编号. RF是重分段标识.通过RF标志来判断是否存在LSF/SO域.LTE独有字段. P用于重 ...

  8. 常见网络报文数据包格式

    当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络.而再这个过程中,每一层都会对要发送的数据加一些首部信息.整个过程如下图. 以太 ...

  9. 数据帧、IP数据包、TCP、UDP报文格式详解----网络通信原理

    数据链路层.网络层.传输层----网络通信原理 物理层 数据链路层 eNSP抓包实验 网络层 ICMP协议概述 eNSP抓包实验 ARP协议概述 eNSP抓包实验 传输层 TCP协议 eNSP抓包 三 ...

最新文章

  1. 数据结构三元组实验报告_数据结构实验报告
  2. CMD如何生成文件夹目录结构
  3. Markdown = PPT ?这个工具给力!
  4. Caffe训练时出现了无数个Train net output #.....
  5. neo4j cypher_Neo4j:Cypher – Neo.ClientError.Statement.TypeError:不知道如何添加Double和String...
  6. 60名英语专八的半年苦战:机器智能背后有一群“数字工人”
  7. 如何使用Aimersoft Video Suite Mac将 DVD 刻录到 ISO/DVD 文件夹
  8. 每天进步一点点——Linux系统中的异常堆栈跟踪简单实现
  9. C#网络编程之---TCP协议的同步通信(相互发送接收数据)
  10. android webview支持webgl,Android WebView支持WebGL
  11. 赵小楼《天道》《遥远的救世主》深度解析(135)观念,传统观念,传统观念有没有用取决于观念,而不在传统
  12. Jetson TX2 apt换源
  13. android 批量安装apk,如何一键批量安装APP应用apk安装包?
  14. 理性的光辉,“哥德尔不完备定理”到底说了些什么?
  15. 转龚文祥的一篇文章:对看起来很美的网站要保持审慎的乐观
  16. Qt编写数据可视化大屏界面电子看板1-布局方案
  17. Android自定义控件eBook翻书效果
  18. 《易经》与二进制的发明
  19. 大数据面试--20210611
  20. 威纶通触摸屏与两台汇川sv660p伺服modbus rtu通讯程序

热门文章

  1. Python简单实现microbit传球小游戏
  2. 【雷达】基于RD、RMA、CS三种算法实现雷达成像附matlab代码
  3. Node - fs(文件系统)
  4. 计算机监控盘柜采用什么接地,dcs机柜是什么 dcs机柜接地规范
  5. python爬取蚂蜂窝帖子图片
  6. NOIP提高组初赛模拟赛赛后感想
  7. Esper学习笔记三:EPL语法(1)
  8. Unity XCode自动发布ipa
  9. 如何替换一个Linux内核函数的实现-热补丁原理
  10. 网络与信息安全笔记(更完)