CAN 与 CANFD数据报文格式解读
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.应用程序里的数据是对象 2.网络传输的过程中一直是二进制 不管有没有进行对象和二进 ...
- BLE数据报文格式解析
1.数据链路层报文结构 报文的基础是数据链路层的报文,其它报文都是从此展开的,BLE数据链路层数据格式如下: 后期补充:在最新的core spec 5.2中,有1M PHY和2M的PHY,对应前导符变 ...
- 解析并符号 读取dll_风电场用风功率采集测风塔数据报文格式解析浅谈
前段时间因为有点事情,好久没有更新了,非常对不住,感谢大家还在关注,下面是正文:看过我前面文章的朋友应该都知道,测风塔上送数据主要包括以下几个环境气象变量:风机轮毂处的风速.风向数据.以及其他不同高处 ...
- RLC协议简单理解1-RLC报文格式
RLC协议简介 RLC(Radio Link Control)在无线协议架构中属于数据面协议中的一部分,数据传输从基站到终端的过程中,一共要经历UDP/SCTP-->SDAP/RRC--> ...
- (一)深入浅出TCPIP之理解TCP报文格式和交互流程
目录 1.引入TCP: 1.1 TCP用户代码 2. TCP数据报文格式 3 TCP栈及socket的初始化
- http报文格式_理解数据通信协议的报文格式有何用?
我们知道应用层的PDU是报文,最后变成物理层的比特流来传播,那么一个协议的报文格式同这个报文本身是什么关系?理解一个协议的报文格式有什么作用?简而言之,数据的发送方每层(从高层向底层下沉过程)做原始数 ...
- 4G、5G RLC AM模式数据和控制报文格式的区别
如下分别为LTE的初传.重传报文和NR的AMD报文格式 LTE/NR报文格式: SN号, RLC PDU的编号. RF是重分段标识.通过RF标志来判断是否存在LSF/SO域.LTE独有字段. P用于重 ...
- 常见网络报文数据包格式
当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络.而再这个过程中,每一层都会对要发送的数据加一些首部信息.整个过程如下图. 以太 ...
- 数据帧、IP数据包、TCP、UDP报文格式详解----网络通信原理
数据链路层.网络层.传输层----网络通信原理 物理层 数据链路层 eNSP抓包实验 网络层 ICMP协议概述 eNSP抓包实验 ARP协议概述 eNSP抓包实验 传输层 TCP协议 eNSP抓包 三 ...
最新文章
- 数据结构三元组实验报告_数据结构实验报告
- CMD如何生成文件夹目录结构
- Markdown = PPT ?这个工具给力!
- Caffe训练时出现了无数个Train net output #.....
- neo4j cypher_Neo4j:Cypher – Neo.ClientError.Statement.TypeError:不知道如何添加Double和String...
- 60名英语专八的半年苦战:机器智能背后有一群“数字工人”
- 如何使用Aimersoft Video Suite Mac将 DVD 刻录到 ISO/DVD 文件夹
- 每天进步一点点——Linux系统中的异常堆栈跟踪简单实现
- C#网络编程之---TCP协议的同步通信(相互发送接收数据)
- android webview支持webgl,Android WebView支持WebGL
- 赵小楼《天道》《遥远的救世主》深度解析(135)观念,传统观念,传统观念有没有用取决于观念,而不在传统
- Jetson TX2 apt换源
- android 批量安装apk,如何一键批量安装APP应用apk安装包?
- 理性的光辉,“哥德尔不完备定理”到底说了些什么?
- 转龚文祥的一篇文章:对看起来很美的网站要保持审慎的乐观
- Qt编写数据可视化大屏界面电子看板1-布局方案
- Android自定义控件eBook翻书效果
- 《易经》与二进制的发明
- 大数据面试--20210611
- 威纶通触摸屏与两台汇川sv660p伺服modbus rtu通讯程序