引言

随着电子、半导体、通讯等行业的快速发展,汽车电子智能化的诉求也越来越强,消费者希望驾驶动力性、舒适性、经济性以及娱乐性更强的汽车。汽车制造商为了提高产品竞争力,将越来越多的电子控制系统加入到汽车控制中,例如ESP(Electronic Stability Program,电子稳定程序)、PEPS(Passive Entry Passive Start无钥匙进入和启动系统)等。但是由于CAN总线的最高传输速率为1Mbit/s(通常汽车CAN系统的实际使用速率最高为500kbit/s),ECU(Electronic Control Unit,电子控制单元)的大量增加使总线负载率急剧增大以致造成网络拥堵,影响信息传输的可靠性和实时性。
随着当今工业的发展,尤其是在CAN总线运用较多的汽车领域,总线通讯的数据量越来越大,例如电动汽车上,汽车内部出现更多的辅助系统和人机交互系统,这就使得传统的CAN总线在传输速率和带宽方面越来越力不从心。因此CAN-FD孕育而生。

CAN-FD比CAN总线的带宽更高,具有与CAN总线相似的控制器接口,这种相似性使ECU供应商不需要对ECU的软件部分做大规模修改,降低了开发难度和成本。CAN-FD是CAN总线的升级换代设计,它继承了CAN总线的主要特性,提高了CAN总线的网络通信带宽,改善了错误帧漏检率,同时可以保持网络系统大部分软硬件特别是物理层不变。CAN-FD协议充分利用CAN总线的保留位进行判断以及区分不同的帧格式。在现有车载网络中应用CAN-FD协议时,需要加入CAN-FD控制器,但是CAN-FD也可以参与到原来的CAN通信网络中,提高了网络系统的兼容性。

CAN-FD帧格式

对比CAN总线帧格式,CAN-FD帧增加或改变了一些位的功能,包括:
  ◆EDL(Extended Data Length)扩展数据长度,在标准的CAN帧中,控制场包含的保留位被指定为显性位发送,但是在CAN-FD帧中EDL以隐性位发送,EDL主要用于区分标准CAN帧格式和CAN-FD的帧格式。由于在CAN-FD中EDL总是以隐形位发送,后面的位r0为显性位,因此可在BRS(Bit Rate Switch)位速率开关位之前提供一个重同步沿,这个沿也可用于在收发器延迟补偿中测量收发器的延迟;
  ◆r1,r0,保留位并以显性位发送,在CAN FD中接收节点忽略r1和r0位的值;
  ◆BRS(Bit Rate Switch)位速率转换开关,当BRS为显性位时数据段的位速率与仲裁段的位速率一致,当BRS为隐性位时数据段的位速率高于仲裁段的位速率;
  ◆ESI(Error State Indicator)错误状态指示,主动错误时发送显性位,被动错误时发送隐性位。
  CAN-FD协议中没有远程帧,标准CAN帧中的RTR位由保留位r1(显性位)替代,因此可将CAN远程帧用于CAN-FD系统中。
  CAN-FD一帧最多可以传输64个字节,因此DLC将重新定义CAN-FD的数据长度,值的范围将由原来的0000b~1000b(覆盖8个字节)扩大至0000b~1111b以满足需求,如图所示为DLC数值与字节数的对应关系

CRC算法

CAN总线通常进行位填充以保持同步,但是位填充会干扰CRC的计算,从而造成错误漏检率达不到设计目标。因为有两种位错误在个别的情况下检测不出来,一种位错误产生位填充条件,另外一种位错误失去位填充条件,这两种位错误都会改变帧位。CAN-FD对CRC算法作了改变,即CRC以含填充位的位流进行计算。在校验和部分为避免再有连续位超过6个,就确定在第一位以及以后每4位添加一个填充位加以分割,这个填充位的值是上一位的反码,作为格式检查,如果填充位不是上一位的反码,就作出错处理。

CAN-FD保留了所有的CAN错误界定机制,包括错误帧、错误计数器、主动错误/被动错误状态等。CAN-FD的CRC场扩展到了21位。由于数据场长度有很大变化区间,所以要根据DLC大小应用不同的CRC生成多项式,CRC_17,适合于帧长小于210位的帧,CRC_21,适合于帧长小于1023位的帧。

CAN-FD位时间转换

CAN-FD有两套位时间配置寄存器,应用于仲裁段的第一套的位时间较长,而应用于数据段的第二套位时间较短。首先对BRS位进行采样,如果显示隐性位,即在BRS采样点转换成较短的位时间机制,并在CRC界定符位的采样点转换回第一套位时间机制。为保证其他节点同步CAN FD选择在采样点进行位时间转换。

CAN-FD应用意义

CAN-FD可以有效提高车载网络的数据传输速率,并且保持现有软硬件不做大的改变。图为Bosch提供的位速率增长曲线,从曲线可以看出当仲裁段的位速率一定时,随着数据段速率的增大数据帧的平均位速率是逐渐增大的,随着帧数据场长度的增加平均位速率也是变大的。当仲裁段位速率选定1Mbit/s、数据场长度为64个字节、数据段的位速率为8Mbit/s时,CAN-FD总线的带宽可以提高到5 Mbit/s多,这是相当可观的。

CAN-FD显著提高了车载CAN网络的带宽,更长的数据场长度可以避免使用多包传输。CAN-FD的成本与CAN总线基本接近,并且对目前的软件和应用程序改动较小,CAN-FD保留了车载CAN网络的物理层和拓扑结构,能够提供CAN总线网络的无缝升级,这些优越性为CAN-FD提供了良好的发展前景。

参考:http://article.cechina.cn/13/0821/10/20130821104920.htm

CAN-FD协议浅析的更多相关文章

  1. 计算机网络通信TCP/IP协议浅析 网络发展简介(二)

    本文对计算机网络通信的原理进行简单的介绍 首先从网络协议分层的概念进行介绍,然后对TCP.IP协议族进行了概念讲解,然后对操作系统关于通信抽象模型进行了简单介绍,最后简单描述了socket   分层的 ...

  2. Http协议浅析

    目录 Http协议浅析 http协议简介 http协议特性 http请求协议与响应协议 请求协议 响应协议 响应状态码 请求URI定位资源 HTTP方法 GET:获取资源 POST:传输实体主体 PU ...

  3. protobuf 协议浅析

    目录 Protobuf 协议浅析 1. Protobuf 介绍 1.1 Protobuf 基本概念 1.2 Protobuf 的优点 1.3 Protobuf, JSON, XML 的区别 2. Pr ...

  4. 【转载】远程桌面协议浅析(VNC/SPICE/RDP)

    远程桌面协议浅析(VNC/SPICE/RDP) 2016年05月14日 01:27:06 wait_for_that_day5 阅读数:18317 标签: VNCRDPSPICE 更多 个人分类: 工 ...

  5. 远程桌面协议浅析(VNC/SPICE/RDP)

    由于最近项目涉及到虚拟桌面,就花了点时间找了点资料看了一下,目前常用的协议有VNC/SPICE/RDP三种,就在这里做一个简单的介绍. 三种协议的对比 SPICE VNC RDP BIOS屏幕显示 能 ...

  6. HTTP协议浅析(一)

    先来看看百度百科对HTTP的解释 http是一个简单的请求-响应协议,它通常运行在TCP之上.它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应.请求和响应消息的头以ASCII码形式给出: ...

  7. UIApplicationDelegate 协议 浅析

    @protocol UIApplicationDelegate<NSObject> @optional - (void)applicationDidFinishLaunching:(UIA ...

  8. web开发微信文章目录

    Web开发微信文章目录 2015-12-13 Web开发 本文是Web开发微信的文章目录.通过目录查看文章编号,回复文章编号就能查看文章全文. 回复编号查看全文,搜索分类名可以获得该分类下的文章.   ...

  9. [转] 浅析HTTP协议

    浅析HTTP协议 来源:http://www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.html HTTP协议是什么? 简单来说,就是一个基于应用 ...

随机推荐

  1. python-装饰器案例1

    python-装饰器案例1 高阶函数+嵌套函数=装饰器 例1: import time def timer(func): def deco(): start_time=time.time() func ...

  2. php多个数组组合算法 火车头免登录发布接口代码备忘

    火车头发布产品的时候,有颜色.尺码.性别等等产品属性,需要进行不重复的组合,变成不重复的数组 <?php function comb($a){ $a = array_filter($a); $o ...

  3. LocalDatetime 与 mybatis、json的坑

    总所周知,localdatetime是jdk8 推出的关于日期计算非常方便地一个类,一旦开始用上就欲罢不能.但是在使用的时候,坑还是蛮多的. 一.mybatis与LocalDatetime 如果直接将 ...

  4. SpringBoot 在IDEA中实现热部署(实用版)(引入)

    SpringBoot 在IDEA中实现热部署(实用版) 引用:https://www.jianshu.com/p/f658fed35786 好的热部署让开发调试事半功倍,这样的“神技能”怎么能错过呢, ...

  5. 自定义前端框架(VUE+magicbox响应式风格)

    1.用脚手架初始化一个vue项目swain $ vue create swain 2.安装几个常用插件

  6. MHA监控进程异常退出(MHA版本:0.56)

    最近遇到一个非常诡异的问题,mha后台进程自己中断退出了.以下是报错:Mon Dec 21 20:16:07 2015 - [info] OK.Mon Dec 21 20:16:07 2015 - [ ...

  7. 使用GitHub(三):使用VSCode+GitHub进行版本控制

    使用GitHub(三):使用VSCode+GitHub进行版本控制 本文简单介绍使用VSCode+GitHub进行项目或者代码的版本控制.本文主要目的是对学习内容进行总结以及方便日后查阅. 详细教程和 ...

  8. mysql向redis导入数据

    数据库结构如下 如果是linux系统下,如此整备数据 SELECT CONCAT( "*10\r\n", '$', LENGTH(redis_cmd), '\r\n',redis_ ...

  9. LINUX笔记之二常用命令(文件处理命令)

    一.概述 1. “.”开头的文件是隐藏文件,大小写敏感是因为用C语言编写 2. DOS中 cd..可回到父目录 在LINUX中要用cd ..(用空格) 3. 4.LINUX命令有两种:仅root可执行 ...

  10. js-点击+加关注变成已关注,已关注状态时,鼠标滑动上的状态时取消关注

    效果: HTML: <div class="rightBtn cur">+关注</div> CSS: .rightBtn{ width: 80px; hei ...