当前位置: 首页 > news >正文

CAN总线详解(四)CANFD报文结构

一、CANFD简介

传统CAN网络中,每个CAN报文最多能够携带8个字节数据,CAN总线最大支持1Mbit/s的通信速率,很难满足高速率、高效率数据传输的需求。
CANFD能支持更高的传输速率,采用的是可变速率传输,可以将CANFD报文分为两个部分,仲裁段和数据段,在仲裁段,CAN总线上可能会存在多个发送节点,会使用较低的通信速率,而数据段则结束了仲裁过程,总线上只有一个节点在发送数据,传输速率可以切换到一个更高的值,CANFD最大可支持8Mbit/s的通信速率
第二个改善是CANFD数据场的扩充,传统数据场最多8个字节,而CANFD报文的数据场长度最大可达到64个字节,此外,基于CANFD的ECU相对于传统CAN的ECU,在硬件方面的改动较小,首先CANFD沿用改动较小的CAN的物理层,同样使用双绞线通信,物理电平与数字信号的转换与传统高速CAN的物理层是一致的,如果原先的CAN的收发器,它能够支持较高速率通信的话,就不需要进行更换,而CANFD在协议层面与传统的CAN有所变动,这是需要使用能够支持FD报文解析的新的CAN的控制器

 
二、CANFD报文类型

CANFD报文的类型,在传统的CAN协议中,CAN报文的内容有四种类型,CAN标准帧、CAN远程帧、CAN扩展帧以及CAN扩展远程帧,而CANFD设计的初衷就是通过更大的数据场来提高数据传输的效率,因此在FD中取消了远程帧这种数据类型,只有两个格式,CANFD标准帧以及CANFD扩展帧CANFD标准帧的特点是ID是11位,数据场长度是0-64个字节,CANFD扩展帧相对于其标准帧来说,将11位的ID扩展为29位,数据场的长度依然是0-64个字节

 
三、CANFD帧结构

CANFD的帧结构在CAN协议帧结构的基础上增加了几个标志位,以及为了完善协议,作了一些改动

  因为CANFD是不存在远程帧这种报文格式的,原先CAN报文中用于区别远程帧和标准帧的RTR位,在CANFD报文中则成为了一个保留位,就是RRS远程请求替代位,默认值是0,CANFD报文增加了一个用来区别传统CAN报文以及CANFD报文的标志位FDF位,这一位的值等于0时,表示它是一个传统CAN报文,当这一位的值等于1时,表示它是一个CANFD报文

  在CANFD中同样是有扩展帧这种报文类型的,因此它和传统的CAN一样,使用IDE扩展符标志位来区别标准帧和扩展帧。IDE=0时,表示CANFD标准格式报文,这一位的值等于1时,则表示CANFD扩展帧报文,CANFD扩展帧与传统CAN报文扩展帧的结构是类似的,扩展帧中29位的报文ID分为两个部分,高11位的ID与低18位的ID将会分开传输。

  CANFD中增加的第二个标志位是BRS位速率切换位,CANFD通信速率并不是一直维持着较高水平,CANFD通信采用的是可变速率,表示在FD报文的数据段,可以选择较高的速率传输,也可以选择和仲裁段速率相同,当BRS=0时,表示CANFD报文的传输保持一个恒定的速度,不进行传输速度的切换,当BRS=1时,则表示在报文的数据段,比特率会切换到第二种较高的值。

  CANFD增加的第三个标志位是ESI错误状态指示位,在传统的CAN报文中,发送节点的错误状态只有这个节点本身知道,而FD通信中发送节点可以通过发送报文中ESI这个标志位来告知其余的接收节点,它当前的错误状态,当ESI这一位的值等于1时,表示发送节点处于被动错误状态,当这一位的值等于0,表示发送节点处于主动错误状态。

  CANFD报文和传统的CAN报文都使用4个位长度的DLC来标志其数据场长度,当数据场长度在0-8个字节时,采用的是线性的表示方式,DLC取值是多少,就表示数据场有多少个字节的数据,当数据场长度大于8个字节时,DLC则采用的是非线性的表示方式,DLC取值为9~15时,分别表示CANFD数据场长度为12到64之间一些离散取值的长度。

  CANFD相对于传统CAN的较大改变是CRC场的优化,FD报文中CRC场的长度和校验内容与传统CAN是不相同的,首先,由于CANFD报文中数据场的长度有很大的变化区间,CANFD会根据数据场长度的变化而使用不同的CRC校验公式,当数据场长度小于16个字节时,会使用17位的CRC进行校验,当数据场长度大于16个字节时,会使用21位的CRC进行校验,此外,CANFD的CRC校验还会将动态填充位计算在内,而传统的CAN CRC计算是不包含填充位的。

  CANFD相对于传统的CAN在位填充机制上有所改动,CRC场之前和CRC场的位填充方式是不相同的,从SOF开始到数据场的最后一位,CANFD位填充的规则与传统的CAN是一致的,都是遵循每5个相同的位之后填充一个相反位,而CRC场的位填充则采用的是固定位置的位填充方式。CANFD在CRC场的前面增加了4个位,对前面的填充位进行技术校验,这四个位称为Stuff Bit Counter填充位计数,CANFD会统计从SOF开始到数据场结束这一段填充位的个数,将统计的数目进行摩拜运算,结果会以格林编码的形式存放在Stuff Bit Counter高三位中,最后一位则是偶校验位,用于对前面的三位进行校验

  刚才提到,CANFD的CRC场使用的是固定位置的位填充机制,这个机制是这样的,首先在Stuff Bit Counter第一位之前增加一个填充位,该位的取值与前一位的数值相反,之后每隔4个位增加一个填充位,每一个填充位都取前一位的相反值,那么在CANFD报文中,17位的CRC校验就增加了6个固定位置的填充位,21位的CRC就增加了7个填充位

 
三、CANFD示波器波形

http://www.dtcms.com/a/350524.html

相关文章:

  • 小红书链接uid等批量转换,界面软件工具
  • 【COMSOL】COMSOL帮助文档无法打开的解决办法
  • 智能专网升级:4G与5G混合组网加速企业数字化转型
  • leetcode算法刷题的第十七天
  • 房地产模式的运行逻辑与内在风险
  • Acrobat DC 中的条件格式化
  • 失眠——记录安东尼威廉饮食习惯的250天
  • 推三返一链动模式裂变图解
  • 用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
  • SSM从入门到实战:3.1 SpringMVC框架概述与工作原理
  • 音视频学习(五十八):STAP-A模式
  • 编写Linux下usb设备驱动方法:probe函数中要完成的任务
  • 麦特轮巡线避障小车开发
  • IEEE子刊 | 注意缺陷多动障碍的功能连接模式:近红外机器学习研究
  • QML中的QtObject
  • QT新建文件或者项目解释:那些模板分别是什么意思?
  • 前端部署终极详细指南
  • 容器日志收集配置在云服务器环境中的集成方案
  • JWT用户认证后微服务间如何认证?(双向TLS(mTLS)、API网关、Refresh Token刷新Token)微服务间不传递用户认证Token
  • C-JSON接口的使用
  • 【什么是端到端模型】
  • 益莱储@PCIe技术大会
  • Bright Data 代理 + MCP :解决 Google 搜索反爬的完整方案
  • WPF 参数设置界面按模型字段自动生成设置界面
  • Docker:网络连接
  • python面试题目100个(更新中预计10天更完)
  • 深度学习(二):数据集定义、PyTorch 数据集定义与使用(分板块解析)
  • 决策树原理与 Sklearn 实战
  • 【动手学深度学习】7.1. 深度卷积神经网络(AlexNet)
  • 0825 http梳理作业