通信总线协议之CAN-FD协议详解

文章目录

  • 通信总线之CAN-FD总线协议详解
    • 1. CAN-FD 简介
      • 1.1 什么是CAN FD
      • 1.2 CAN FD的特点
    • 2. CAN-FD总线协议
      • 2.1 帧起始
      • 2.2 仲裁段
      • 2.3 控制段
      • 2.4 数据段
      • 2.5 CRC段
      • 2.6 ACK段
      • 2.7 帧结束
    • 3. 如何从传统的CAN升级到CAN FD

通信总线之CAN-FD总线协议详解

1. CAN-FD 简介

1.1 什么是CAN FD

  • 在《 通信总线协议之CAN总线协议详解 》中介绍了CAN 2.0 A/B总线协议,但是随着总线技术在汽车电子领域越来越广泛的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度数据传输速率的要求也越来越高,传统CAN(1MBit/s,8Bytes Payload)已难以满足日益增加的需求。
  • 因此,一种能够与CAN 2.0 A/B兼容,但通信速率更高,有效载荷更高的CAN总线 :CAN-FD总线协议应运而生,在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate)
  • CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。

1.2 CAN FD的特点

  • CAN FD传输速率是可变的:从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,最高速率可达到8Mbps
  • CAN FD数据长度不同:CAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节,这减少了协议开销,并提高了协议效率。
  • CAN FD帧格式不同:CanFD新增了FDF、BRS、ESI位
    • FDF 位(Flexible Data Rate Format):原 CAN 数据帧中的保留位 r,用来区别是 CAN 报文还是 CAN-FD 报文,FDF 位常为隐性 1,表示 CAN FD 报文;
    • BRS 位( Bit Rate Switch):表示位速率转换,当 BRS 为显性位 0时,数据段的位速率与仲裁段的位速率一致(恒定速率),当 BRS 为隐性位 1时速率可变(即 BSR 到 CRC 使用转换速率传输);
    • ESI 位(Error State Indicator):发送节点错误状态指示,主动错误时发送显性位 0被动错误时发送隐性位 1

2. CAN-FD总线协议

  • CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。
  • 与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。

CAN 标准帧格式
CAN FD帧格式

2.1 帧起始

  • CAN FD与CAN使用相同的SOF标志位来标志报文的起始
  • 帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步的作用
    在这里插入图片描述

2.2 仲裁段

  • 与传统CAN相比,CAN FD取消了远程帧,用RRS位替换了RTR位,为常显性;
    • RTR(Remote Transmission Request Bit):远程发送请求位,RTR位在数据帧里必须是显性,而在远程帧里为隐性
    • RRS(Remote Request Substitution):远程请求替换位,即传统CAN中的RTR位,CAN FD中为常显性
  • IDE位仍为标准帧和扩展帧标志位,若标准帧与扩展帧具有相同的前 11 位 ID,那么标准帧将会由于 IDE 位为 0,优先获得总线;
    在这里插入图片描述

2.3 控制段

  • 控制段中CANFD与CAN有着相同的IDEresDLC位;同时增加了三个控制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表示数据段的长度,对应的关系如下:
    在这里插入图片描述

2.4 数据段

  • 数据段即为传输的具体数据内容
  • CAN FD不仅能支持传统的0-8字节报文,同时可以支持12, 16, 20, 24, 32, 48, 64字节

在这里插入图片描述

2.5 CRC段

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

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

    1. 格雷码计算:CRC区域之前的填充位数除以8,得到的余数(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit 0-2)
    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.6 ACK段

  • 与CAN相比,在CAN FD中最多可接受2个位时间有效的ACK,允许1个额外的位时间来补偿收发器相移和传播延迟
  • 由从高速的数据场到慢速的仲裁场时,时钟切换会引起收发器相移和总线传播延迟;为了补偿其相移和延迟,相比传统的CAN,在CAN FD中多加了这额外的1位时间
  • 在ACK之后,发送ACK界定符,这是一个表示ACK结束的分隔符,用1位隐性位表示
    在这里插入图片描述

2.7 帧结束

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

3. 如何从传统的CAN升级到CAN FD

  • 尽管 CANFD 继承了绝大部分传统 CAN 的特性,但是从传统 CAN 到 CANFD 的升级, 仍需要做很多的工作,主要包括:
    1. 硬件和工具方面,要使用 CANFD,首先要选取支持 CANFD 的 CAN 控制器和收发器,还要选取新的网络调试和监测工具;
    2. 网络兼容性方面,对于传统 CAN 网段的部分节点需要升级到 CANFD 的情况要特别注意,由于帧格式不一致的原因,CANFD 节点可以正常收发传统 CAN 节点报文,但是传统 CAN 节点不能正常收发 CANFD 节点的报文;

感谢阅读 若有错误 欢迎指正 !!!


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

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

相关文章

selenium高级应用

常见控件应用 复杂的控件操作1.操作Ajax选项2.滑动滑块操作 WebDriver的特殊操作元素class值包含空格property、attribute、text的区别定位动态id 截图功能页面截图页面截图,返回截图的二进制数据页面截图,返回base64的字符串截取指定元素。先定位元素&a…

Redis常见数据类型下

目录 Hash 哈希 常用指令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET 内部编码 Hash类型和关系型数据库 缓存方式对比 List 列表 特点 常用命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP / RPOP LINDEX LINSERT 阻塞(BLOCK)版…

【Linux】文件缓冲区|理解文件系统

目录 预备知识 观察现象 第一:携带\n,不使用fork(),打印到显示器 第二:携带\n,使用fork(),打印到显示器 第三:携带\n,使用fork(),打印到文件里 第四:不携…

如何选择适合的G口大流量服务器?

G口大流量服务器是指接入互联网的带宽达到1Gbps及以上,并且能够提供大量数据传输服务的服务器。那么如何选择适合的G口大流量服务器,RAK部落小编为您整理发布选择适合的G口大流量服务器需要考虑哪些关键点。 选择适合的G口大流量服务器时,应该…

JavaSec 基础之 CC1 链

文章目录 背景环境以及配置分析0x1 终点(利用点分析)0x20x30x310x320x33 0x040x05 背景 Apache Commons Collections是Apache提供的一个Java库,它扩展了Java自带的集合框架。通过这个库,咱们可以使用更多种类的集合类型,以及各种实用的集合操…

星星魔方

星星魔方 1,魔方三要素 (1)组成部件 6个中心块和8个角块和三阶魔方同构,另外每个面还有构成五角星的十个块。 (2)可执行操作 一共12种操作,其中6种是每个层顺时针旋转90度,另外6…

HTML静态网页成品作业(HTML+CSS)——家乡漳州介绍设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

Python的特性——跟老吕学Python编程

Python的特性——跟老吕学Python编程 Python的特性1.Python易学易用2.Python是解释型语言3.Python是交互式的4.Python是一种多范式语言5.Python的标准库6.Python是开源的7.Python是跨平台的8.用于GUI应用程序的Python9.Python的数据库连接10.Python是可扩展的11.Python拥有活跃…

【golang】28、用 httptest 做 web server 的 controller 的单测

文章目录 一、构建 HTTP server1.1 model.go1.2 server.go1.3 curl 验证 server 功能1.3.1 新建1.3.2 查询1.3.3 更新1.3.4 删除 二、httptest 测试2.1 完整示例2.2 实现逻辑2.3 其他示例2.4 用 TestMain 避免重复的测试代码2.5 gin 框架的 httptest 一、构建 HTTP server 1.1…

ElementUI两个小坑

1.form表单绑定的是一个对象&#xff0c;表单里的一个输入项是对象的一个属性之一&#xff0c;修改输入项&#xff0c;表单没刷新的问题&#xff0c; <el-form :model"formData" :rules"rules" ref"editForm" class"demo-ruleForm"…

蓝牙耳机链接电脑莫名奇妙关机问题(QQ浏览器)

蓝牙耳机连接电脑听歌的时候&#xff0c;如果听歌软件是暴风影音&#xff0c;或者其它播放器&#xff0c;蓝牙不会自动关机&#xff0c;但如果是QQ浏览器&#xff0c;蓝牙耳机经常莫名其妙的关机&#xff0c;时间间隔忽长忽短&#xff0c;没有规律&#xff0c;解决办法就是重启…

考研C语言复习初阶(5)

目录 一.表达式求值 1.1隐式类型转换 1.2 算术转换 12.3 操作符的属性 二. 指针是什么&#xff1f; 三 指针和指针类型 3.1 指针-整数 3.2 指针的解引用 3.3 野指针 四.指针运算 4.1 指针-整数 4.2 指针-指针 4.3 指针的关系运算 5. 指针和数组 6. 二级指针 …

202012青少年软件编程(图形化) 等级考试试卷(一级)

青少年软件编程(图形化) 等级考试试卷(一级)2020年12月 第1题:【 单选题】 下面哪个区域是“舞台区” ?( ) A:A B:B C:C D:D 【正确答案】: B 【试题解析】 : 第2题:【 单选题】 下图为小猫的初始方向, 哪个积木可以让小猫面向正右方?( ) A: B: C:…

2024.3.11 训练记录(13)

继续补题 文章目录 ICPC 2018青岛I Soldier GameICPC 2018青岛K Airdrop ICPC 2018青岛I Soldier Game 题目链接 线段树 果然稍微复杂一点的线段树就很难实现啊&#xff0c;不看题解根本没反应过来是线段树 struct Node {int l, r, lb, rb, nb, b; } tr[N * 4];其中&#x…

一个Promise全新API

1. 资讯速览 最近&#xff0c;Promise 新出了一个方法&#xff0c;已经进入 Stage 3 &#xff08;候选阶段&#xff09; &#xff0c;相信很快就能达到 Stage 4 &#xff08;完成阶段&#xff09;&#xff0c;并在项目中广泛使用。 这个方法就是 Promise.withResolvers。它是…

【C++干货基地】面向对象核心概念与实践原理:拷贝构造函数的全面解读

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

游戏行业需要堡垒机吗?用哪款堡垒机好?

相信大家对于游戏都不陌生&#xff0c;上到老&#xff0c;下到小&#xff0c;越来越多的小伙伴开始玩游戏。随着游戏用户的增加&#xff0c;如何保障用户资料安全&#xff0c;如何确保游戏公司数据安全等是一个不容忽视的问题。因此不少人在问&#xff0c;游戏行业需要堡垒机吗…

系统设计 - SDK设计流程

▌从 0 到 1 开发 一般从 0 设计一款 SDK&#xff0c;总体上可以分为 5 个步骤&#xff1a;基础架构的设计、开放 API 接口设计、业务功能框架设计与开发、基础核心库设计与开发、打包与发布。 1. 第一步是基础架构设计&#xff0c;一个好的架构可主要从可读性、可扩展性、可维…

css3实现3D立方体旋转特效源码

源码介绍 CSS3自动旋转正方体3D特效是一款基于css3 keyframes属性制作的图片相册自动旋转立方体特效 效果展示 下载地址 css3实现3D立方体旋转特效代码

PCL点云处理之四点确定球心和半径(克拉默法则C++) (二百二十九)

PCL点云处理之四点确定球心和半径(克拉默法则C++) (二百二十九) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 相比于计算点坐标均值作为球心和某点到均值距离作为半径的快速计算法,这里介绍的方法更加适合精度要求较高的四点定球计算,下面是具体的实现代码,C++编…