一文搞懂CAN和CAN FD总线协议

news2025/1/11 14:11:00

一、CAN与CAN FD的概念

1、CAN是什么

控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。 CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。 该协议的健壮性使其用途延伸到其他自动化和工业应用。 CAN协议的特性包括完整性的串行数据通讯、提供实时支持、传输速率高达1Mb/s、同时具有11位的寻址以及检错能力。

CAN连线图

2、CAN FD是什么

CAN FD 是CAN with Flexible Data rate的缩写,翻译为【可变速率的 CAN】。 也可以简单的认为是传统CAN的升级版,其中要说明的是,只升级了协议,物理层没有改变。

3、为什么需要CAN FD?

原因主要是汽车功能越来越多,越来越复杂,传统的CAN总线(CAN2.0)的负载率越来越高,甚至负载率高达95%,以及传统CAN总线还存在一些局限性。

传统CAN总线的局限性包括:

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

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

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

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

目前的很多应用对于通讯的数据量要求越来越高,对于通讯的速率要求也越来越高,尤其是当速率高于1MBit/s的时候,传统的CAN通讯是无法满足的,所以基于这种应用的需求,CAN FD就应运而生了。 既然是出于这样的目的,CANFD的出现肯定是需要解决传输速率和传输字节的问题,带着这样的思路我们就可以更容易地理解CANFD协议,以及为什么会出现它了。

二、CAN与CANFD的比较

CAN与CAN-FD主要区别:传输速率不同、数据域长度不同、帧格式不同、ID长度不同。

1、传输速率不同

CAN的传输速率

一般的工程中比较常用的为500K每秒的通讯速率。 这个速率在实际测试的时候也是非常可靠的。 CAN总线上任意两个节点的最大传输距离与其位速率有关。 最大通信距离指的是同一条总线上两个节点之间的距离。 从下面图中,可以看到速率越低通讯距离就越远,也就是说CAN总线的通讯距离和波特率成反比。 CAN最大传输速率为1Mbps

CAN总线的通讯距离和波特率的关系图

CANFD的传输速率

CAN-FD 采用了两种位速率:从控制场中的 BRS 位到 ACK 场之前(含 CRC 分界符)为可变速率,其余部分为原 CAN 总线用的速率。 两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位 TQ 外,位时间各段的分配比例也可不同。

因此,对于 CAN FD而言,是在 CAN 的基础上增加了一个数据域的传输速率,数据传输速率要大于等于原 CAN 总线用的速率。 也就是说 CAN FD 支持两种传输速率,两种速率可以保持一致,也可以不保持一致。 速率可变,仲裁比特率最高1Mbps,数据比特率最高8Mbps。

标准帧对比

扩展帧对比

2、数据域长度不同

CAN的数据域长度,一帧数据最长8字节。 CAN FD数据域长度,一帧数据最长64字节。

传统CAN报文与CANFD报文的DLC长度区别如下所示:

传统CAN报文与CANFD报文的最大区别有2点,1、CANFD可以传输更多的数据,2、CANFD报文在传输中由2种传输速率完成传输,一种是标称的CAN总线速率(用于传输非数据域的字段),另一种是数据域传输速度(用于传输数据域的字段)。

3、帧格式不同

在CAN总线上传输的信息称为报文,当总线空闲时任何连接的单元都可以开始发送新的报文。 CAN通信是通过以下5种类型的帧进行的:数据帧 、遥控帧 、错误帧 、过载帧 、帧间隔。

can总线数据帧格式

can遥控帧

3.1.CAN Framing 帧格式

  • 标准帧
    • 标准帧(11 ID + 0~8 bytes data)
    • 标准远程帧(11 ID + 0 byte data)
  • 扩展帧
    • 扩展帧(29 ID + 0~8 bytes data)
    • 扩展远程帧(29 ID + 0 byte data)

  • SOF:0(显性电位为 0,隐性电位为 1,总线空闲默认为 1),帧起始,接收节点收到帧起始会和总线时钟进行同步(硬同步、重同步,这里是硬同步)。
  • 仲裁字段
ID:高位在前
RTR:远程帧请求,远程帧为 0,表示是数据帧,否则是远程帧。远程帧表明接受该帧的节点即不主动发送数据,当他收到远程帧时,才开始发送数据,减少占用 CAN 的通信。
  • 控制字段
IDE:表示是否是扩展帧,IDE 为 1 是扩展帧
r:保留位
DLC:数据长度,合理范围是 0 - 8,超过则表示 8 字节
  • 数据字段
  • 校验字段
CRC:15位校验位
DEL(delimter):分隔符,无意义,为 1
  • 确认字段
ACK:发送节点,该位都为 1,接受节点 CRC 正确则在 ACK 位时,该位置置为 0,否则还是 1。如果发送节点回读 ACK 是 0,继续发送,否则停止发送,下一次发送一个错误帧。(下一次发送错误帧不太理解)
DEL
  • EOF + ITM:结束字段 + 帧间隔

扩展帧结构

  • 位填充:
出现了五个相同的位(包括填充位),就在下一个位置填充一个相反的位。
范围从 SOF 开始一直到 CRC。

帧错误检测机制

  • 位监控:回读发送出去的位的数据
  • ACK 位:发送数据的节点回读 ACK 是 0,继续发送,否则意味着发生错误停止发送
  • Stuff Check:填充检测
  • CRC 检测
  • Form 检测:一些分隔符 del 等
  • 发先帧错误后:某一个节点检查到发送或者接受的帧出现错误,会以发送错误帧的方式告知其他参与通信的节点,当前正在发送或者接受的帧是有问题的。

帧错误检测机制

3.2.CAN FD Framing 帧格式

硬件、协议轻微改动。CAN FD 数据段最多 64 字节。CAN FD 最高支持 8MB/s 的传输速率。CAN FD 采用可变速率,数据字段传输快。

CAN FD 没有远程帧,只分为两种:标准帧(标识符 11 位)和扩展帧(标识符 29 位)

CAN FD标准帧中的数据帧

CAN FD标准帧和扩展帧结构

  • SOF:帧起始
  • 标识符ID
  • RRS 代替原来的 CAN 帧的 RTR
  • IDE:表示是否是扩展帧
  • FDF:表示是否是 CAN 帧还是 CAN FD 帧
  • r:保留位
  • BRS(Bit Rate Switch): 之后数据段传输是否变换速度,BRS 之前属于仲裁段,会以低速传输;BRS 开始到 CRC 分隔符为止,属于数据段,可以高速传输。CRC 分割符之后,由于需要 ACK 应答,因此又变为低速传输。

BRS=0,保持低速传输,BRS=1,数据段以高速传输

  • ESI:用来告知其余节点,发送方的错误状态。ESI=1,Tx Node处于被动错误状态;ESI=0,Tx Node处于主动错误状态
  • DLC:0-8 线性表示数据长度,9-15离散的表示数据长度。

  • CRC:根据不同的数据长度使用不同长度的 CRC 校验。CAN 使用 15 位的 CRC 校验,且不包含填充位。CAN FD CRC 包含数据填充位。CAN FD 在 CRC 字段的前四位增加了对前面填充位的计数校验,前面的填充同样是 5 个相同位跟一个相反的位。CRC 字段不适用之前的填充,而是使用固定位填充,从 CRC 字段开始位置开始填充,每隔四个位填充一位,每次填充的位都取前一个的相反值。
先统计 SOF 开始到 CRC 字段之前填充位的个数对 8 取模,将数值以格林编码的形式存放在高三位,最后一位偶校验位,校验前三位。
当数据段大于 16 字节,使用 21 位 CRC
当数据段小于等于 16 字节,使用 17 位 CRC

3.3.CAN FD新增了FDF、BRS、ESI位

FDF:表示CAN报文还是CAN-FD报文。
BRS:表示位速率转换,该位隐性(1)时,速率可变(即BSR到CRC使用转换速率传输),该位为显性(0)时,以正常的CAN-FD总线速率传输(恒定速率);
ESI:表示发送节点状态。

4、ID长度不同

CAN标准帧ID长度最长11bit,CANFD标准帧ID长度可扩展到12bit。

三、CAN与CANFD的优劣势

1、CAN优势

  • 具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;
  • 采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;
  • 具有优先权和仲裁功能,多个控制模块通过CAN 控制器挂到CAN-bus 上,形成多主机局部网络;
  • 可根据报文的ID决定接收或屏蔽该报文;
  • 可靠的错误处理和检错机制;
  • 发送的信息遭到破坏后,可自动重发;
  • 节点在错误严重的情况下具有自动退出总线的功能;
  • 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。

2、CAN缺点

不一致性

CAN总线各节点质量的不一致会引发系统瘫痪、错误、死机等问题,所以CAN一致性测试成为保证CAN网络安全运行的重要手段。

不可预测性

CAN总线将节点状态分为ErrorAcTIve、Error Passive 和Bus Off 三种,这三种状态在一定条件下可以互相转换,不同状态中节点的发送有不同的延迟。 另外,由于CAN 的原子广播特点,其它节点的发送错误或接收错误会开启一个错误帧,从而影响到该节点的接收错误计数器的值,进而影响节点状态。

信道出错堵塞

节点有可能受干扰或其它原因暂时或永久失效,出错的主机会命令CAN 收发器不断发送消息,即所谓的Babbling ldiot 错误。 由于该信息的格式等均合法,因此CAN 没有相应的机制来处理这种情况。

3、CAN FD的优势

CAN FD提高位速率的同时提供更短的CAN帧

  • 延迟时间更短.
  • 更好的实时性能
  • 更高的带宽

CAN FD可以在CAN帧中容纳从8到64字节更多的数据

  • 相对更少的系统开销 = 更好的数据吞吐量
  • 发送较大数据对象时,软件更简单高效

CAN FD具有更高性能的CRC算法

  • 降低未检测到错误的风险
  • 但是因为受制于产品的稳定性考验,改造成本等问题,还没办法快速全面普及CAN FD。

四、小结

总的来看,由于现在车辆上需要的通讯数据越来越多,而原有的CAN负载率逐年升高,考虑到传统的CAN通讯的架构已经非常的庞大了,如果将传统的全部推翻更换一个全新的通讯方式所要付出的代价实在太大,所以需要一个既能兼容原有的CAN通讯,又不至于增加太高的成本,CAN FD就是一个折中方案,同时还可以提高数据的传输量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正中优配:创业板怎么开通

作为我国资本市场的一个重要组成部分&#xff0c;股票市场一直是出资者追逐高收益的抢手挑选。而近年来&#xff0c;创业板作为我国股票市场上的一颗新星&#xff0c;备受创业者、出资者的关注。但关于一些新手出资者来说&#xff0c;可能对“创业板怎样注册”这个问题还比较陌…

一文看懂开发者需要了解的信创概念

信创这个概念对于大家来说并不陌生&#xff0c;至少我们在海量的新闻中会时不时的听到这个概念&#xff0c;特别是在西方国家对中国进行技术封锁加剧时&#xff0c;证券市场中它还会时不时成为一个风口板块。 其实“信创”理解起来也并不困难&#xff0c;就像它的字面意思&…

手把手教你Jenkins整合Jmeter实现自动化接口测试

01、在机器上安装jmeter 下载&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 这里我用了一台Windows安装jmeter用来写接口测试的脚本&#xff0c;启动前修改jmeter.properties 中 jmeter.save.saveservice.output_format值为xml。 编写接口测试脚本&#xff1a; …

外贸软件鞋类行业管理难点及解决方案

鞋子作为一种常见的商品&#xff0c;在出口外贸中占据着重要的地位。近几年&#xff0c;随着我国经济的建设步伐的不断加快&#xff0c;对外贸易活跃度也随之得以提升&#xff0c;中产阶层的消费人群及需求量都在不断增长&#xff0c;其中鞋业也经历了急剧的发展&#xff0c;成…

汽车自适应巡航系统控制策略研究

目 录 第一章 绪论 .............................................................................................................................. 1 1.1 研究背景及意义 ..........................................................................................…

C# 如何将使用的Dll嵌入到.exe应用程序中?

文章目录 前言详细实操简要步骤 前言 有没有想自己开发的exe保留一点神秘&#xff0c;不想让他人知道软件使用了哪些dll; 又或许是客户觉得一个软件里面的dll文件太多了&#xff0c;能不能简单一点&#xff0c;直接双击.exe就可以直接运行了&#xff0c;别搞那么多乱七八糟的。…

Android开发仿美团购物左右联动列表

概述 Android开发左右联动列表&#xff0c;仿照美团外卖点餐时&#xff0c;左右列表可以联动。 详细 Android开发仿美团购物左右联动列表 概述 左右联动列表是仿照美团外卖点餐时&#xff0c;左右列表可以联动。比如右边列表会有小项对应左边的&#xff0c;滑动时会置顶&a…

数字IC验证高频面试问题整理—附答案(三)

最近大家无不在讨论IC秋招&#xff0c;秋招想必缺的就是面试题目了。这不就来了~ 共150道验证高频面试题整理~含答案&#xff08;文末可领取全部题目&#xff09; Q1.二进制码、格雷码、独热码的特点 二进制码&#xff1a;基本的机器语言&#xff0c;每一位只能是0或1&…

K8s:一文带你认知 CRI,OCI,容器运行时,Pod 之间的关系

写在前面 博文内容整体结构为结合 华为云云原生课程 整理而来,部分内容做了补充课程是免费的&#xff0c;有华为云账户就可以看&#xff0c;适合理论认知&#xff0c;感觉很不错。有需要的小伙伴可以看看&#xff0c;链接在文末理解不足小伙伴帮忙指正 对每个人而言&#xff0c…

<硬件设计> 阻抗设计(一) 阻抗及其模型介绍

目录 01 阻抗相关介绍 阻抗(Electrical Impedance) 阻抗匹配(Impedance Matching) 常规的阻抗线(Impedance Matching) 02 微带线与带状线 微带线(MicroStrip) 带状线(Stripline) 03 文章总结 大家好&#xff0c;这里是程序员杰克。一名平平无奇的嵌入式软件工程师。 在…

mysql8.0以上忘记密码的重置方法 - window系统

1、关闭 mysql 服务&#xff0c;以 管理员身份 运行命令提示符工具&#xff0c;执行下面的命令 net stop mysql可以在任务管理器的服务中查看状态 2、跳过 mysql 权限验证&#xff0c;以管理员身份运行 cmd&#xff0c;进入 mysql 的安装 bin 目录&#xff0c;执行如下指令 m…

另一棵树的子树

目录 题目题目要求示例 解答方法一、实现思路时间复杂度和空间复杂度代码 方法二、实现思路时间复杂度和空间复杂度代码 题目 另一棵树的子树 题目要求 题目链接 示例 解答 方法一、 递归法 实现思路 依次将树中的每一棵子树都与目标树比较&#xff0c;如果有子树与目标…

树多选搜索查询,搜索后选中状态仍保留

<template><div class"half-transfer"><div class"el-transfer-panel"><div><el-checkbox v-model"selectAll" change"handleSelectAll">全部</el-checkbox></div><el-input v-model&qu…

使用gn+Ninja构建项目

使用下载编译好的gn和ninja报错 先下载了gn的源码[gn.googlesource.com/gn]&#xff0c;然后编译报错&#xff0c;就直接下载了了编译号的gn和Ninja&#xff0c;然后写了Helloworld应用的BUILD.gn&#xff0c;然后将"gn\examples\simple_build\build"拷贝至当前目录…

Qt之遮罩—实现不规则窗体

Qt之setMask() 前言 使用遮罩可以将窗口形状多样化&#xff0c;变成各种各样的图片或者图形&#xff0c;先看一下效果吧&#x1f447; 可以看到现在的窗口是一束花&#xff0c;而我们拖动花就相当于拖动窗口&#xff0c; setMask()只是说可以让哪些地方可见哪些地方不可见其…

Doris最大链接数优化

问题背景&#xff1a; 用户在使用Doris的时候&#xff0c;当访问用户过多时会报Reach limit of connections&#xff0c;针对这种情况需要调整Doris最大连接数&#xff0c;具体做法如下。 解决办法&#xff1a; Session变量设置 SET PROPERTY FOR root max_user_connection…

网络优化工程师,你真的了解吗?

一、5G网络优化工程师到底是什么&#xff1f; 5G&#xff0c;就是我们通常所说的第五代移动通信标准&#xff0c;属于目前最热门的新技术趋势。随着2019年5G技术进入正式的商用阶段&#xff0c;拥有广阔的发展前景&#xff0c;备受瞩目。“5G工程师”这个词是一个概念词&#x…

新增!视频智能分析/AI算法智能分析网关V5告警功能添加教程来咯!

智能分析网关系列是基于边缘AI计算技术&#xff0c;可对前端摄像头采集的视频流进行实时检测分析&#xff0c;能对监控画面中的人、车、物进行识别&#xff0c;可实现的检测包括&#xff1a;人脸检测与识别、车辆检测与识别、烟火识别、安全帽/反光衣识别、区域入侵识别等&…

用P,V操作解决进程同步问题的解题步骤(优化版)

蓝颜色是格外注意的 还有读读共享&#xff0c;读写互斥问题。 要背会四个模式&#xff0c;套用模式 例题讲解1&#xff09;生产者-消费者问题 一般意义的“生产者—消费者”问题&#xff1a;N个buffer&#xff0c;多个生产者&#xff0c;多个消费者&#xff0c;循环存取buffer。…