CANFDCAN协议对比 - 基础介绍_01

news2024/11/25 4:55:22

目录

一、为什么会出现CANFD?

1、信号数量大量增加

2、新要求,新总线系统

3、CAN性能限制

4、更短的位时间也能满足

???CAN是否会被取代?

二、CANFD优点

1、更多数据,更低总线负载率

2、开发更简单

3、通信控制器向下兼容

4、新旧控制器并行使用

5、沿用现有的CAN知识

CAN和CANFD硬件兼容

6、CANFD控制器支持经典CAN

三、CANFD 帧类型

1、标准格式和扩展格式

2、CANFD没有远程帧

3、RRS取代RTR


一、为什么会出现CANFD?

1、信号数量大量增加

        最近数十年,人们的出行方式得到极大的改善,汽车行业也得到了迅猛的发展,汽车嵌入式系统结构也发生了重大的变化,最明显的就是车上电子器件的数量,可以说是增涨了好几倍,如果还是之前的CAN、LIN总线,哪些只能满足数百个信号的传输,而今天这个数字已经达到了五位数,并且还在发展中,因此CANFD就应运而生了。

2、新要求,新总线系统

        随着数据量的增多,CAN总线上面的负载越来越来越高(CAN总线为广播信号);因此除了对带宽的要求在不断的增加,对确定性的系统行为需求也在不断的增加,这也导致了新总线系统的开发不得不出现。因此出现了主要用于信息娱乐的MOST总线,确定性的总线FlexRay,主要用在驾驶辅助相关的功能上,而在低端带宽上,引入了成本极其低廉的LIN总线解决方案,主要用在实时性不高的系统例如电动尾门、座椅、车窗等,然而这么多总线的出现依然没有替代CAN总线的统治地位,它依然是今天的主流。

3、CAN性能限制

        CAN总线的性能限制主要是由于自身的属性所决定的,在报文传输过程中,CAN总线网络中是存在多个网络节点都在发送消息的;仲裁段会在报文发送的时候就会开始,并且贯穿于报文发送过程的始末状态;这也就意味着,一个位的传输事件一定不小于节点从一个端点到另一个端点时间的2倍。比如:在一个40米的CAN总线上,一个传输所需要的时间是一定不会小于1微秒,也就是说最大传输速率会小于1Mb/s。

4、更短的位时间也能满足

        但在CAN报文仲裁阶段和应答场之间,仅允许一个发送节点。因此,这一部分对位时间的最小持续时间没有限制。那么在博世的工程师看来,如果在CAN报文这一部分提高传输速率会怎样?只需在两个不同的传输速率之间切换:在CAN报文的开头和末尾切换为慢速,在中间切换为快速。这就是CAN FD的基本概念

???CAN是否会被取代?

        上面其实已经回答过这个问题,CAN是不会被取代的,极少数需要速度更快、带宽更宽、价格便宜的才会替代,整体来说CAN总线在速度、带宽、价格平衡性最好的一款总线,其他的总线都会因为各种各样的限制导致无法进行普及,并且软件、硬件、系统转换为新技术的开发工作巨大。当前各种CAN的新方案也在探索之中,比如多路CAN、速度更高的CANFD、CANXL等。因此短时间内不用担心被取代的问题,依然是汽车上最重要的总线之一。

二、CANFD优点

1、更多数据,更低总线负载率

        传输速率更快,当前支持的最大传输速率可到达10 Mbit/s,同样的数据,总线负载率会降低很多,一帧报文可以传输更多的数据场。例如:如果CANFD以8倍的速度传输数据场,那么CANFD传输在同样的时间内传输数据接近CAN的5倍,并且只需要一个原来八分之一的ID。

2、开发更简单

        1)总线负载率问题将大大减少

        2)不再需要使用多条CAN总线

        3)即使未能消除对网关的需求,也会大大减少

        4)由于每一帧可以承担更多的有效负载,因此需要的数据段更少

        5)使用更少的帧,获得更理想的有效负载与开销数据比

3、通信控制器向下兼容

        为了确保CANFD能够正常的工作,因此需要新的CANFD控制器,而且又为了兼容旧的CAN协议,并且能够正常的处理经典CAN,将CAN总线上的各个ECU逐渐替换为支持CANFD的控制器,就能够保证ECU既能够支持经典CAN又能够支持CANFD,平缓的实现了过度,无论是软件和硬件都能够完美的适用。

4、新旧控制器并行使用

        汽车上有很多ECU,然而并非需要将所有的ECU都更换为支持CANFD才能直接使用,上面说过,当前车上存在的ECU数量众多,因此车身、娱乐、控制等等模块都是使用不同的总线进行交互的,因此会存在多条总线共存的情况,并且单个ECU也可以存在多条总线,他们可以是经典CAN,也可以是CANFD,因此只需要将他们分别挂在不同的总线即可,这样就能实现新旧控制器的并行使用。

5、沿用现有的CAN知识

        CANFD还有一个非常大的优点就是,它并非一个全新的技术,个人认为它与经典CAN的相似度达到95%以上,甚至如果稍微偏一点应用,那几乎与经典CAN毫无差别;这也就意味着做经典CAN的测试和开发工程师来说,几乎不花费太多的学习成本,即可实现CANFD的应用。

CAN和CANFD硬件兼容

6、CANFD控制器支持经典CAN

        CAN FD控制器可以发送和接收经典CAN帧以及CAN FD,但经典CAN控制器接收到CAN FD帧报文时将始终使用错误帧进行响应:因为在经典CAN中,认为保留位的显性位的值为1是违反规则的;因此在经典CAN中将采用错误帧来回复该无效值。故而传统的CAN控制器不支持CAN FD帧。

三、CANFD 帧类型

1、标准格式和扩展格式

        CANFD与经典CAN类似,同样采用两种类型的数据格式: 具有11位标识符的标准顿和具有29位标识符的扩展帧。因此,只需要对CANFD进行微调即可使用CANopen、SAE-J1939、ISO-14229等相关的高层协议。

2、CANFD没有远程帧

        这里是CANFD一个特殊的点,由于CANFD中没有为远程帧定义单独的格式,因此导致CANFD没有了远程帧,不过这对于使用来说没有任何的影响,远程帧没有数据场,因此提高传输速率也没有用(CANFD的高速率是体现在数据段的),因此经典CAN的远程帧请求帧也可以作为CANFD的远程帧使用。

3、RRS取代RTR

        与上面对应,因为CANFD没有了远程帧,因此RTR位也是可有可无的存在,所以就被RRS(Remote Request Substitution远程请求替代位取代,并始终显性);帧起始(SOF)、标识符和扩展位标识符(IDE)保持不变;另外CANFD结束应答位(ACK)、界定符(DEL)、间隔场(TM)保持与经典CAN一致。CANFD和经典CAN的区别仅仅是在IDE与应答位之间的内容进行了部分的修改。

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

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

相关文章

计算机网络 三(数据链路层)下

流量控制与可靠传输机制 流量控制手段:接收方收不下就不回复确认。 传输层流量控制手段:接收端给发送端一个窗口公告 #可用协议 可用协议 停止等待协议 概念、出现原因 停止等待协议是一种简单的数据传输协议,常用于数据传输的可靠性较低…

【Docker实战】使用Docker部署Tomcat

【Docker实战】使用Docker部署Tomcat 一、Tomcat介绍1. Tomcat简介2. Tomcat特点3. Tomcat容器部署的优点4. Tomcat的配置文件 二、检查本地环境三、检查本地Docker环境1. 检查本地Docker服务2. 检查Docker版本 四、搜索docker hub中的tomcat镜像五、下载tomcat镜像六、创建Tom…

chatgpt赋能Python-pythona的三次方

Python 的三次方:探索 Python 强大的数学计算能力 Python 是一种高级编程语言,被广泛应用于数据分析、机器学习、人工智能等领域。除此之外,Python 还拥有强大的数学计算能力,其中包括 Python 的三次方计算功能。在本文中&#x…

AI人工智能标记数据的技术:类型、方法、质量控制、应用

AI人工智能 标记数据 在人工智能(Artificial Intelligence,简称AI)领域中,标记数据是非常重要的一环。它是指对原始数据进行标记和注释,以便机器学习算法可以理解和利用这些数据。标记数据可以提高机器学习模型的准确…

实战【云原生】--- Kubernetes集群

K8S集群负载均衡层防火墙 实例 一、kubeadm 部署 K8S 集群架构1、关闭所有节点的防火墙 核心防护 iptables swap交换2、修改主机名3、调整内核参数 二、安装Docker1、所有节点安装docker2、所有节点配置k8s源3、所有节点安装kubeadm,kubelet和kubectl 三、部署k8s集…

2023/5/21总结

因为之前高中学过一点点的html。虽然不是很多&#xff0c;但是有一点点基础&#xff0c;看了一些关于html的知识点&#xff0c;算是复习了&#xff0c;如果后面忘记打算再去查。 html是超文本标记语言&#xff0c;通常由<></>构成&#xff0c;当然也有单标记&…

chatgpt赋能Python-python5__2

Python中整除运算符 // 的用法和重要性 在Python中&#xff0c;整除运算符 // 有着广泛的应用&#xff0c;特别是在数据分析、科学计算、金融量化、游戏开发等领域中&#xff0c;它是很重要的基础运算符。 什么是整除运算符 //&#xff1f; 整除运算符 // 是Python中的一种二…

chatgpt赋能Python-pythonbmi

Python计算BMI - 计算和判断你的身体状况 BMI&#xff0c;即Body Mass Index&#xff0c;中文翻译为“身体质量指数”&#xff0c;是目前世界上公认的反映体重是否正常的最权威的指标之一。 计算BMI可以帮助我们判断自己的身体状况&#xff0c;是如今非常流行的健康指标之一。…

【iOS】SDWebImage源码学习--未完

SDWebImage的主要功能及相关知识点 SDWebImage是一个流行的第三方库&#xff0c;用于在iOS和macOS应用程序中异步下载和缓存图像。它提供了一种简单而强大的方式来处理网络图像加载和缓存&#xff0c;具有以下主要功能&#xff1a; 异步下载&#xff1a;SDWebImage使用多线程…

MyBatis中动态SQL的使用和注意事项说明

文章目录 0、前言1、if2、where3、trim4、choose-when-otherwise5、foreach应用场景1&#xff1a; 通过数组实现批量删除应用场景2&#xff1a; 通过list集合实现批量添加 6、include抽取公共SQL片段 0、前言 MyBatis框架动态SQL技术是根据特定的条件拼接SQL语句的功能&#x…

【计算机图形学】曲线和曲面

模块5 曲线和曲面 一 实验目的 编写曲线和曲面的算法 二 实验内容 1&#xff1a;绘制Bezier曲线&#xff0c;并采用自行设计输入和交互修改数据点的方式。 实验结果如下图所示&#xff1a; 第一步&#xff1a;输入特征多边形的顶点个数&#xff0c;并按照顺序输入顶点的坐…

《心静的力量》读书笔记

让心静下来&#xff0c;战胜一切忧虑 于我们每个人而言&#xff0c;最重要的就是不要去看远方模糊不清的事&#xff0c;而要做手边真实清楚的事。 明天的重担&#xff0c;加上昨天的重担&#xff0c;会成为今天的最大障碍&#xff0c;要把未来同过去一样紧紧地关在门外……未…

将MetaHuman的身体替换为虚幻商城模型的身体

一、准备好MetaHuman模型和虚幻商城模型 1.准备好MetaHuman模型,参考这篇文章 虚幻商城模型转MetaHuman制作MetaHuman并导入UE,同时复制一个MetaHuman模型 2.下载虚幻商城的原始模型,并导入UE 二、将虚幻商城模型的头去掉 1.打开虚幻商城的模型,找到分段 2.在右边点击…

chatgpt赋能Python-pythonapp开发

PythonApp开发&#xff1a;为什么选择Python实现&#xff1f; Python是当今最流行的编程语言之一&#xff0c;尤其在Web应用开发和数据分析领域更是大有作为。本文将探讨Python在App开发领域中的表现&#xff0c;为什么Python可以成为您理想的选择&#xff1f; 1. 简单易学 …

深度学习基础入门篇[8]::计算机视觉与卷积神经网络、卷积模型CNN综述、池化讲解、CNN参数计算

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

leetcode--优先队列

2163,删除元素后的最小差值 给你一个下标从 0 开始的整数数组 nums &#xff0c;它包含 3 * n 个元素。 你可以从 nums 中删除 恰好 n 个元素&#xff0c;剩下的 2 * n 个元素将会被分成两个 相同大小 的部分。 前面 n 个元素属于第一部分&#xff0c;它们的和记为 sumfirst …

RabbitMQ如何保证顺序性

1. RabbitMQ消息顺序性说明 顺序性&#xff1a; 消息的顺序性是指消费者消费到消息和发送者发布的消息的顺序是一致的 举个例子&#xff0c;不考虑消息重复的情况下&#xff0c;如果生产者发布的消息分别为msg1、msg2、msg3 那么消费者必然也是按照 msg1、msg2、msg3 的顺序来…

【数据结构】--- 博主拍了拍你并向你扔了一“堆”二叉树(堆的概念+结构+代码实现)

文章目录 前言&#x1f31f;一、二叉树的顺序结构及实现&#xff1a;&#x1f31f;二、堆的概念及结构&#xff1a;&#x1f31f;三、堆的代码实现&#xff1a;&#x1f30f;3.1 堆的创建&#xff1a;&#x1f30f;3.2 堆的结构&#xff1a;&#x1f30f;3.3 初始化&#xff1a…

Spring Security 如何实现身份认证和授权?

Spring Security 是一个开源的安全框架&#xff0c;提供了基于权限的访问控制、身份认证、安全性事件发布等功能。在 Spring Boot 应用中使用 Spring Security 可以非常方便地实现用户身份认证和授权。 Spring Security 实现身份认证的主要方式是使用认证过滤器链&#xff0c;…

C语言入门级小游戏——扫雷

文章目录 游戏思路游戏文件的创建游戏菜单棋盘的创建初始化棋盘打印棋盘 布置雷排查雷game.h —— 游戏函数的声明game.c —— 游戏函数的实现test.c —— 游戏的测试 今天我们写一个小游戏——扫雷来增加我们对编程的兴趣 希望这篇文章对友友们有帮助! 游戏思路 游戏文件的创…