为什么需要CAN FD?

在汽车行业,为什么需要CAN FD?

1. 原因主要是因为汽车功能越来越多,越来越复杂,传统的CAN总线(CAN2.0)的负载率越来越高,甚至负载率高达95%。

2. 因为传统CAN总线的局限性:

· 传输率最大为1Mbiy/s(典型的<= 500kbit/s);

· 传统CAN数据帧超过50%的额外开销(overhead > 50%)。

3. 对比其他协议,额外开销比例要小得多,如UDP (1500 bytes/datagram, 64 bytes overhead),FlexRay(254 bytes/frame, 8 bytes overhead)。

4. 因为历史原因,汽车不可能直接放弃目前的传统CAN总线技术,一切推到重来。那么为了解决CAN总线负载率问题,而又能兼容CAN总线,并且研发成本不能太高的问题,2015年最新的修订版ISO 11898-1(classic CAN和CAN FD)发布。

什么是CAN FD?

CAN FD 是CAN with Flexible Data rate的缩写。也可以简单的认为是传统CAN的升级版。在上一篇文章汽车的中枢神经系统——CAN总线简介可以看到CAN整个发展历程。

2011年,开始CAN FD协议的开发。

2015年,ISO 11898-1(Classical CAN和CAN FD)修订版发布。

对比传统CAN总线技术,CAN FD有两方面的升级:

1. 支持可变速率—> 最大5Mbit/s;

2. 支持更长数据长度--> 最长64 bytes数据。

CAN FD的开发成本和传统CAN开发成本相差不大,并且可以和传统CAN很好兼容。

CAN FD对比FlexRay的优势在于:

1. CAN FD的开发成本远低于FlexRay;

2. FlexRay对ECU升级刷写不友好。

CAN FD对比以太网的优势在于:

1. CAN FD的开发成本远低于以太网;

2. 以太网优势在于大数据的传输但不能完全适用于当前汽车架构。

From Vector——Data Rate VS Cost

CAN FD 数据帧

对比传统CAN的数据帧,CAN FD在控制场新添加EDL位、BRS位、ESI位,采用了新的DLC编码方式、新的CRC算法(CRC场扩展到21位)。

CAN FD数据帧 VS CAN数据帧

1. 起始位SOF(start of frame)

传统CAN的数据帧起始位SOF和CAN FD的数据帧起始位SOF是一样的,一个bit的显性位‘0’。

2. 仲裁场(Arbitration Field)

对比传统CAN数据帧,CAN FD共享相同的CAN ID,包括扩展数据帧的ID。

CAN FD用RRS bit(始终为显性位‘0’)代替RTR。

FDF(FD format)表示CAN FD还是传统CAN数据帧:

· FDF – ‘0’ --> 传统CAN数据帧

· FDF – ‘1’--> CAN FD数据帧

BRS(Bit Rate Switch)表示时钟频率的切换:

· BRS – ‘1’-->时钟频率切换

ESI(Error State Indicator)表示CAN总线的错误状态。

3. DLC控制域(control Field)

DLC用于表示数据帧的数据长度。并且支持传统CAN 数据帧的编码方式。

4. CRC

CAN总线由于位填充规则对CRC的干扰,造成错帧漏检率未达到设计意图。CAN FD对CRC算法做了改变,即CRC以含填充位的位流进行计算。在校验和部分为避免再有连续位超过6个,就确定在第一位以及以后每4位添加一个填充位加以分割,这个填充位的值是上一位的反码。作为格式检查,如果填充位不是上一位的反码,就作出错处理。CAN FD的CRC场扩展到了21位。

根据不同的数据长度,CRC的长度也不一样:

· CRC 15bits –> 传统CAN;

· CRC 17bits--> 数据长度<= 16bytes;

· CRC 21bits -->数据长度>16bytes。

CRC的结束标识位(CRC Delimiter)一般是1位,但也接收2位。

5. ACK

ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别。

6. 结束标识符(End of Frame)

EOL在传统CAN,CAN FD中都是7个连续隐性位“1”。

性能对比

can协议crc计算_CAN总线的升级版——CAN FD简介相关推荐

  1. can协议crc计算_CAN总线通信的CRC校验方法

    数据校验是为保证数据的完整性进行的一种验证操作.CAN通信采用CRC校验作为一种重要的错误检测手段,是节点判断CAN帧信息的完整性并产生确认应答的依据. 在现场总线通信和控制的实际应用中,工业应用环境 ...

  2. can协议crc计算_详解CAN/CAN FD通信中的循环冗余校验(CRC)方法

    数据校验是为保证数据的完整性进行的一种验证操作.CAN通信采用CRC校验作为一种重要的错误检测手段,是节点判断CAN帧信息的完整性并产生确认应答的依据. 在现场总线通信和控制的实际应用中,工业应用环境 ...

  3. can协议crc计算_基于CAN总线的CRC校验码的原理与实现

    基于CAN总线的CRC校验码的原理与实现 王鹏 [摘 要]CAN总线又称为控制器局域网技术,属于工业现场总线,应用范围很广.CAN系统中通常 采用反馈重发机制对通信过程进行差错控制.当接收端反馈给发送 ...

  4. 协议crc计算_从零了解modbus协议 第三篇

    Modbus 介绍 协议介绍 MODBUS协议是一种消息传递结构,广泛用于智能设备间建立主从通信.一个MODBUS消息从主机发给从机,包含了从机地址.命令(例如,读寄存器或者写寄存器).数据.校验码( ...

  5. 协议crc计算_CRC校验原理及代码实现(一)

    网上的有关CRC的原理和代码实现的文章,数不胜数,但比较全的好像还没看到:此文是集百家之智慧,加之自己的使用经验和理解汇聚此文,让你快速理解和使用CRC,当然不足之处欢迎评论区吐槽. 1. CRC是什 ...

  6. can test 接收报文_CAN总线

    CAN总线(一) 原文出处:http://www.cnblogs.com/jacklu/p/4729638.html 博客园,作者:lulujianjie 嵌入式的工程师一般都知道CAN总线广泛应用到 ...

  7. STM32CubeIDE开发(十), stm32的CRC计算CubeMX配置及HAL库底层实现分析

    一.stm32的CRC 1.1 CRC的简介及MCU关联说明 STM32的CRC(Cyclic Redundancy Check,循环冗余校验)计算单元使用一个固定的多项式发生器,从一个32位的数据字 ...

  8. 用虹科Pico汽车示波器计算CAN总线负载率

    CAN总线负载率是指CAN总线上单位时间内实际传送的位数和可以传送的位数之比,也就是总线实际数据传输速率与理论上能达到的数据传输速率的比值.例如波特率为500kbps的CAN总线理论上每秒钟能够传输5 ...

  9. CRC校验工具 校验码自动生成软件支持十几种CRC计算方式

    CRC校验工具 校验码自动生成软件支持十几种CRC计算方式,包括MODBUS协议的CRC-16校验,CRC4.CRC5.CRC6.CRC7.CRC8.CRC16等21种算法,见图示.id=620738 ...

最新文章

  1. 【图像分类】 基于Pytorch的多类别图像分类实战
  2. python代码覆盖率测试_利用coverage工具进行Python代码覆盖率测试
  3. LeetCode 942. 增减字符串匹配
  4. 简要描述内部连接和外部连接之间的区别_创新性的M12推拉式连接器推拉标准—跨制造商自动化技术的里程碑...
  5. 包教包会,7段代码带你玩转Python条件语句
  6. 送你几款数据可视化大屏项目,科技感爆棚!!
  7. Android中startActivity中的permission检测与UID机制
  8. 程序员写简历时不要犯这种低级的错误!
  9. 利用Runtime为Category添加属性
  10. 2011 微软MVP全球峰会美国行之飞离北京
  11. 怎么把mxf转换成mp4?
  12. ab并发测试post请求传参
  13. IntelliJ IDEA如何自动生成serialVersionUID?
  14. Linux与Windows命令行杀死端口命令
  15. 马云的妻子曝光,背景十分惊人!没有她就没有今天的阿里巴巴.....
  16. OSDev——Bare Bones
  17. OpenInfra Days China 2020大会议程已上线,快来报名参加!
  18. 防静电包装材料应用越来越广泛,这些变化你知道吗?
  19. GP232RL直接替代FT232RL串口芯片uart接口
  20. css渐变效果的实现

热门文章

  1. python输入半径计算公式_Python:09设计Circle类包括圆心半径、颜色属性,编写类方法计算周长与面积(2种方法)...
  2. win10任务管理器快捷键_win10系统任务管理器怎么打开
  3. php 微信开发 菜单,微信公众号中个性化菜单的开发实例
  4. 百度seo指南_什么是SEO?网站怎么做SEO优化(问答篇)
  5. mysql 5.6 删除用户_mysql 新增 删除用户和权限分配
  6. mysql缓存 碎片_Mysql查询缓存碎片、缓存命中率及Nagios监控
  7. python3.6下载百度云_Python3.6零基础入门与爬虫案例开发教程
  8. mysql高级笔记_MySQL高级部分笔记
  9. JenKins使用pm2部署.net core网站
  10. keil_rtx特点