文章目录

  • 前言
  • 一、CAN FD简介
    • 1.1 CAN FD是什么?
    • 1.2 为什么要CAN FD?
    • 1.3 CAN FD的特点
  • 二、CAN FD协议
    • 2.1 CAN FD帧结构
      • 2.1.1 帧起始
      • 2.1.2 仲裁段
      • 2.1.3 控制段
      • 2.1.4 数据段
      • 2.1.5 CRC段
      • 2.1.6 ACK段
      • 2.1.7 帧结束
  • 总结:

前言

前面的文章介绍了CAN协议、本文介绍一下CAN FD,对比一下这两者的区别。希望看完后,能对你有所帮助。
CAN 协议介绍的文章:CAN总线详细介绍


一、CAN FD简介

1.1 CAN FD是什么?

CAN FD,全称为CAN with Flexible Data rate。继承了CAN的主要特性,弥补了CAN的数据长度和带宽的限制。可简单认为CAN FD就是CAN的升级版。

2011年,开始CAN FD协议的开发,2012年发布第一个版本,2015年ISO11898-1进行了修订,将CAN FD加入其中。

1.2 为什么要CAN FD?

随着汽车功能越来越复杂,也越来越往智能化发展,传统的CAN总线已经跟不上时代的速度了。主要原因有如下几点:

  1. CAN 总线最高速率为 1Mbit/s,实际使用中通常只有是 500k,随着功能的逐渐增多,各 ECU 之间的信息交互也越多,导致总线负载持续增加;
  2. CAN 报文中只有约 40~50%的带宽用于实际数据传输;
  3. 最大总线速度受到响应机制的限制,例如 CAN 控制器中的 ACK
    生成延迟;收发器传播延迟;导线延迟等。

为了解决CAN总线的局限,就对其进行升级,CAN FD就此应运而生了。

1.3 CAN FD的特点

  1. 传输速率是可变的。从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,最高速率可达到8Mbps。其他部分与CAN相同。
  2. 数据长度不同。CAN FD支持的最大数据长度为64byte。
  3. 帧格式不同。CanFD新增了FDF、BRS、ESI位

二、CAN FD协议

2.1 CAN FD帧结构

CAN FD数据帧结构与CAN一样,一共有:帧起始SOF,仲裁段,控制段,数据段,CRC段,ACK段,帧结束,共7个部分

CAN 标准帧结构

CAN FD 标准帧结构

2.1.1 帧起始

CAN FD与CAN使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步的作用

2.1.2 仲裁段

与传统CAN相比,CAN FD取消了远程帧,用RRS位替换了RTR位,为常显性。IDE位仍为标准帧和扩展帧标志位,若标准帧与扩展帧具有相同的前 11 位 ID,那么标准帧将会由于 IDE 位为 0,优先获得总线。

RTR(Remote Transmission Request Bit):远程发送请求位,RTR位在数据帧里必须是显性,而在远程帧里为隐性。
RRS(Remote Request Substitution):远程请求替换位,即传统CAN中的RTR位,CAN FD中为常显性。

CAN和CAN FD 仲裁段的对比

2.1.3 控制段

控制段中CANFD与CAN有着相同的IDE,res,DLC位。同时增加了三个控制bit位,FDF、BRS、ESI。

FDF(Flexible Data Rate Format):原CAN数据帧中的保留位r。FDF常为隐性,表示CAN FD 报文。

BRS(Bit Rate Switch):位速率转换开关,当BRS为显性位时数据段的位速率与仲裁段的位速率一致,当BRS为隐性位时数据段的位速率高于仲裁段的位速率。

ESI(Error State Indicator):错误状态指示,主动错误时发送显性位,被动错误时发送隐性位。


DLC同样是4bit表示数据段的长度,对应的关系如下:

DLC取值和数据长度的关系

2.1.4 数据段

CAN FD不仅能支持传统的0-8字节报文,同时最大还能支持12, 16, 20, 24, 32, 48, 64字节

2.1.5 CRC段

为了避免位填充对CRC的影响,CAN FD在CRC场中增加了stuff count记录填充位的个数对应8的模,并用格雷码表示,还增加了奇偶校验位。FSB(fixed stuff-bit)固定为前一位的补码。

Stuff Count由以下两个元素组成:

格雷码计算:CRC区域之前的填充位数除以8,得到的余数(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit0-2)
奇偶校验(parity):通过格雷码计算后的值的奇偶校验(偶校验)

CAN FD对CRC算法进行了改进,CRC对填充位也加入了计算。在校验和部分为避免有连续位超过6个,就确定在第一位以及以后每4位添加一个填充位加以分割,这个填充位的值是上一位的反码,作为格式检查,如果填充位不是上一位的反码,就作出错处理。

CAN的CRC的位数是15位,而在CAN FD中,CRC场扩展到了21位,如下:

当传输数据为0~8字节或更少时:CRC 15位
当传输数据为9~16字节或更少时:CRC 17位
当传输数据超过17~64个字节时:CRC 21位

2.1.6 ACK段

与CAN相比,在CAN FD中最多可接受2个位时间有效的ACK,允许1个额外的位时间来补偿收发器相移和传播延迟)

由从高速的数据场到慢速的仲裁场时,时钟切换会引起收发器相移和总线传播延迟。为了补偿其相移和延迟,相比传统的CAN,在CAN FD中多加了这额外的1位时间。
在ACK之后,发送ACK界定符。这是一个表示ACK结束的分隔符,为是1位隐性位。

2.1.7 帧结束

与CAN一样,CAN FD的帧结尾也为连续7位的隐性位

总结:

CAN FD 兼容CAN,可以正常收发传统CAN报文,但是传统CAN不能正确收发CAN FD报文,帧格式不一致,会导致传统CAN发送错误帧。就像平常的软件版本一样,高版本向下兼容。
CAN FD能传输的数据更多,速率也更高,安全性也更高。

CAN FD总线详细介绍相关推荐

  1. AXI4(AXI-full)总线详细介绍

    AXI4(AXI-full)总线详细介绍 1.1 什么是AXI 1.1.1 zynq的三种AXI总线 1.1.2 AXI的三种接口 1.1.3 AXI协议 1.1.3.1 AXI握手协议 1.1.3. ...

  2. FlexRay 总线详细介绍

    文章目录 前言 一.FlexRay简介 1.1 什么是FlexRay? 1.2 为什么要FlexRay? 1.3 FlexRay的特点 二.FlexRay协议介绍 2.1 FlexRay物理结构 2. ...

  3. Linux小工具(3)之/proc目录详细介绍(上)

    目录 前言 一.平台说明 二./proc目录概述 三.准备使用 (1)进程描述文件夹 (2)/proc目录下常见的文件夹 前言 Linux系统的使用有别于Windows系统,无论是系统信息还是应用软件 ...

  4. 【STM32H7教程】第90章 STM32H7的CAN FD总线之关键知识点整理

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第90章       STM32H7的CAN FD总线之关键知 ...

  5. linux :udev规则详细介绍

    udev规则介绍 by Daniel Drake (dsd) 翻译:嵌入式学吒(GLL) 目录 udev规则介绍 介绍 概念 为什么? 写规则 规则文件和语义 语法规则 基本规则 匹配sysfs属性 ...

  6. autosar中com模块_详细介绍AUTOSAR各个模块作用PART1(OS,SYS)

    这片文章中我们详细讲解下每个模块的功能,上图是vector的autosar方案,每个模块的详细介绍后续会有单独文章进行讲解,请关注.以下是各个模块的简介 1.VHSM hardware Securit ...

  7. CAN总线基础(二)——CAN总线物理层介绍(总线电压详解)

    CAN总线的物理层定义了连接车内各控制器的相关介质以及接口.由于CAN总线的数据传输实质是通过总线上的电压变化传输的,所以CAN的总线电压是CAN总线技术的核心所在,总线电压在物理层中定义.为了深刻理 ...

  8. Ubuntu根目录下各文件夹的功能详细介绍

    Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. /bin/    用以存储二进制可执行命令文件. / ...

  9. SPI、I2C、UART 三种串行总线对比介绍

    转载自https://blog.csdn.net/oqqHuTu12345678/article/details/65445338 参考博客 https://blog.csdn.net/xiaodin ...

最新文章

  1. 图表2------沪深300指数图+收盘价的EMD分量图+PCA后的特征累计贡献率表+预测模型评估指标公式表
  2. Skype For Business 2015实战系列6:后端数据库安装CU6补丁
  3. vue里面怎么删除部分页面_基于VUE选择上传图片并页面显示(图片可删除)
  4. 鼠标在计算机上被关闭了怎么处理,鼠标驱动程序丢失导致系统自动关闭的解决方法...
  5. word2vec原理_word2vec论文阅读笔记
  6. [Java基础]反射获取构造方法并使用练习
  7. java 防止sql注入的方法(非原创)
  8. javascript在IE和Firefox下的不同之处
  9. 20170919_C++面试问题记录
  10. Android persistent机制
  11. python蒙特卡洛_Python:从零开始的汉密尔顿蒙特卡洛
  12. 解读0715微淘客大封号
  13. js随机选学员。从以下学员名单中随机选出4个学员。
  14. 我个人的人生学习感想!
  15. win7记事本如何转换html,Win7把记事本文件格式变成PDF格式的方法
  16. 源码编译安装LAMP
  17. c 语言drawtext字体旋转,C# GDI+文字画图 添加任意角度文字(文字旋转是中心旋转,角度顺时针为正)...
  18. vot-toolkit-python测试DiMP50在VOT2018上的表现
  19. 凯文.柯恩《真爱无尽精选辑》
  20. Python与简单网络爬虫的编写

热门文章

  1. 《麦肯锡方法》学习笔记9
  2. 局域网联机_【进击的巨人21】【全DLCs整合】【局域网联机】【免安装解压即玩】 免费分享...
  3. DCN2800-4G路由器配置详解
  4. function 与 => 的区别
  5. 【源码】iOS指纹解锁Touch ID的开发
  6. maxwell启停脚本
  7. 保姆级Linux系统安装并使用libpng攻略
  8. 君子挟才以为善,小人挟才以为恶。
  9. [js学习] javaScript学习
  10. 把机顶盒刷成Linux操作系统