1.概述
  1. CAN-FD:可以理解成CAN协议的升级版,只升级了协议物理层未改变
  2. CAN与CAN-FD主要区别:传输速率不同、数据长度不同、帧格式不同、ID长度不同。
  3. 由传统CAN转移到CANFD比较方便
2. 传输速率不同
  1. CAN:最大传输速率1Mbps。
  2. CAN-FD:速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps。
3. 数据域长度不同
  1. CAN:一帧数据最长8字节
  2. CAN-FD:一帧数据最长64字节。
4. 协议内容改变—取消远程帧

5. CANFD报文具体结构—红色缩写为增加部

6. CAN报文与CANFD报文结构对比
  1. CANFD不存在远程帧,CAN报文中的RTR(用于区别标准帧与远程帧)被替换为RRS(远程请求替代位,默认值为0)
  2. FDF用于传统CAN报文和CANFD报文,FDF位为0时为传统报文,FDF为1时为CANFD报文
  3. BRS位速率切换为,BRS位为0时CANFD速率保持恒定速率、BRS位为1时CANFD的数据段会被切换到高速率。
  4. ESI错误状态指示位:CAN报文中发送节点的错误状态只有该节点自己知道,CANFD报文中可以通过ESI标志位来告诉其他节点该节点的错误状态,当ESI为1时表示发送节点处于被动错误状态、当ESI为0时表示发送节点处于主动错误状态
  5. CRC-stuff count:填充位计数(计算从SOF开始到Data Field最后一位的填充位的个数)
  • CRC场之前和CRC场之后位填充是不一样的
  • SOF到Data Field最后一位的位填充跟CAN报文一样:每五个相同位之后填充一个相反位
  • CRC场采用固定位填充
  1. Stuff Count由以下两个元素组成:
    格雷码计算(前3位):CRC区域之前的填充位数除以8,得到的余数(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit0-2)
    奇偶校验(最后1位):通过格雷码计算后的值的奇偶校验(偶校验)

  1. CRC:随着数据场的扩大,为了保证信息发送的质量,CAN FD的CRC计算不仅要包括数据段的位,还包括来自SOF的Stuff Count和填充位。通过比较CRC的计算结果,可以判断接收节点是否能够正常接收。
    在CAN中,CRC的位数是15位,而在CAN FD中,CRC场扩展到了21位,详见以下:

CAN中:CRC 15位
CANFD中当传输数据为16字节或更少时:CRC 17位
CANFD中当传输数据超过16字节时:CRC 21位


8. CRC的Bit Stuffing

  • Stuff Count 之前加一个填充位,每隔4位添加1个填充位,
  • 17位的CRC有6个Stuff Bits
  • 21位的CRC有7个Stuff Bits
7. CANFD报文的标准帧和扩展帧—IDE为1表示为扩展帧、为0表示标准帧

CANFD和CAN的区别简介相关推荐

  1. 以太坊客户端Ethereum Wallet与Geth区别简介

    以太坊客户端Ethereum Wallet与Geth区别简介 最近有不少朋友在搭建交易平台,在咨询和技术交流的过程中发现很多朋友不太清楚Ethereum Wallet和Geth区别.甚至有朋友使用Ge ...

  2. CUDA/cudnn/CUDA Toolkit/NVCC区别简介

    CUDA:为"GPU通用计算"构建的运算平台. cudnn:为深度学习计算设计的软件库. CUDA Toolkit (nvidia): CUDA完整的工具安装包,其中提供了 Nvi ...

  3. ARM和Intel处理器区别简介

    64位 对于64位计算,ARM和Intel有一些显著区别.其实,Intel并没有开发64位版本的x86指令集.这个64位的指令集,名为x86-64(有时简称为x64),实际上是AMD设计开发的.故事是 ...

  4. openGL、D3D、vulkan区别简介

    跨平台之王--OpenGL OpenGL发展至今,已经有20余年,作为一个成熟并久负盛名的跨平台计算机图形应用程序接口规范,它被广泛使用在游戏.影视.军事.航空航天.地理.医学.机械设计,以及各类科学 ...

  5. 串口、COM口、UART口、USB口和TTL、RS-232、RS-485、USB电平区别简介

    串口.COM口.USB口是指的物理接口形式(硬件).而TTL.RS-232.RS-485.USB电平是指的电平标准(电信号). 一.串口.COM口.UART口.USB口(物理接口): COM口即串行通 ...

  6. Java关于equals()方法和“==”逻辑运算符的区别简介

    由于Java并没有像C++那样的重载运算符的机制,因此在比较类对象时,Java没有办法像C++那样通过重载==运算符来直接比较两个类对象是否相等,只能使用Object类中的equals()方法来对类对 ...

  7. count相加 sqlserver_mssql sqlserver sum(1)、sum(2)、count(1)、count(8)、count(*)、统计函数应用区别简介...

    二.sum count函数举例说明 create table test(A int,B int,info varchar(10)) go insert into test(A,B,info)value ...

  8. ioc 与 DI | 区别简介

    看到一个对这个概念很好诠释的帖子,特转发过来供大家一起学习 转载地址http://www.iteye.com/topic/692793 在android butterknife 中采用注解 依赖注入 ...

  9. WLAN与WIFI的区别

    WLAN简介: WLAN全称为:Wireless Local Area Networks,中文解释为:无线局域网络,是一种利用射频(Radio Frequency RF)技术进行据传输的系统,该技术的 ...

  10. c++内存,堆和栈的区别

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105022725 c ...

最新文章

  1. python自学到精通
  2. java并发集合有哪些_java中常见并发集合有哪些?详细解析
  3. linux 易语言窗口程序_浅谈Linux入门的基本知识
  4. 是什么专业_自考什么专业容易就业
  5. python实现二叉搜索树_python实现二叉查找树
  6. MonoRail - 简介 [基础知识篇]
  7. 查找表的原理与结构 什么是竞争与冒险现象?怎样判断?如何消除?
  8. 手机距离传感器坏了有什么影响_恢复出厂设置对手机有什么影响?
  9. 超详细!一文详解 SparkStreaming 如何整合 Kafka !附代码可实践
  10. 到底他怎么赚钱了啊?看来看去也看不出他赚钱了,看来经济头脑有限啊
  11. mysql日期查询_mysql 查询日期
  12. 一款比较好看的javascript轮播图代码
  13. 此加载项为计算机上的所有用户安装但只能,win7系统控件无法安装的解决方法...
  14. 《Vim实用技巧》笔记
  15. 创业公司怎么搞大数据?
  16. 自然人独资企业要上缴哪些税
  17. [备查]使用 SPQuery 查询 Person or Group 字段
  18. java写接口给前端_看看人家那后端API接口写得,那叫一个优雅!
  19. 未能连接重庆农村商业银行服务器,急重庆农村商业银行usbkey驱动程序安装...
  20. 网络:TCP与UDP

热门文章

  1. 从概念到应用,腾讯视角深入“解剖”AI平台和语音技术
  2. Netlink组播机制
  3. java 获取身份证号组成信息
  4. Knockoutjs开发指南
  5. knockoutjs 经验总结
  6. 金蝶K3cloud 7.6注册教程
  7. 用计算机代码怎么表白,程序员如何用代码向喜欢的人表白?
  8. QT网络编程TCP/UDP开发流程 制作网络调试助手
  9. Unity5.0 Shader 极简入门(一)
  10. 25个常用的正则表达式汇总