草庐IT

常用车载总线CAN、CAN FD、LIN、FlexRay、Ethernet介绍

嵌入式老林 2023-08-16 原文

文章目录


前言

摘要:相信做汽车电子行业的小伙伴,对CAN等常用车载总线并不陌生,当然了,可能不做汽车电子的也知道CAN,因为CAN的使用范围不再局限于汽车行业了。航空航天、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械等都会使用到。总线那么多,你是否也和我一样,懵懵懂懂,搞不清楚他们之间的区别呢?下面简单介绍一下,有个初步的了解,希望能帮助你区分它们

【关于这些总线的详细介绍可分别参考如下】:

CAN总线详细介绍:CAN总线详细介绍
CAN FD总线详细介绍:CAN FD总线详细介绍
LIN总线详细介绍:LIN总线详细介绍
FlexRay总线详细介绍:FlexRay总线详细介绍


一、为什么要这些总线

简单来讲,就是以前的汽车功能单一,都是采用传统的布线方式,各个模块之间都是采用点对点的通信方式,各个模块之间纵横交错,导致系统很庞大。随着汽车朝着自动化和智能化方向发展,传统的布线方式无法满足现在的需求,就有了这些总线

传统的布线方式图

二、车载总线的种类

车载总线种类繁多,就我目前了解到,有如下:CAN、CAN FD、LIN、MOST、FlexRay 和 Ethernet等。

应用示例

1.CAN

1.1 CAN协议简介

CAN,全称为“Controller Area Network”,即控制器局域网,是一种串行数据通信协议。
最初,CAN 被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置 ECU 之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入 CAN 控制装置。
CAN 最初出现在 80 年代末的汽车工业中,由德国 Bosch 公司最先提出。当时,由于消费者对于汽车功能的要求越来越多, 而这些功能的实现大多是基于电子操作的, 这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出 CAN 总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线, 所有的外围器件可以被挂接在该总线上。1993 年,CAN 已成为国际标准 ISO11898(高速应用)和 ISO11519(低速应用)。

1.2 CAN协议特点

  1. 可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。
  2. 采用非破坏性位仲裁总线机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据。
  3. 可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。
  4. 直接通信距离最远可达10km(速率5Kbps以下)。
  5. 通信速率最高可达1MB/s(此时距离最长40m)。
  6. 节点数实际可达110个。
  7. 采用短帧结构,每一帧的有效字节数为8byte。
  8. 每帧信息都有CRC校验及其他检错措施,数据出错率极低。
  9. 通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。
  10. 节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响。

2.CAN FD

2.1 CAN FD协议简介

随着汽车功能越来越多,数据传输对带宽的要求也越来越高,CAN总线由于带宽的限制,已经无法满足要求了,就推出了CAN FD,全称为CAN with Flexible Data rate。继承了CAN的主要特性,弥补了CAN的数据长度和带宽的限制。可简单认为就是CAN的升级版

2011年,开始CAN FD协议的开发,2015年ISO11898-1进行了修订,将CAN FD加入其中。

2.2 CAN FD协议特点

  1. 传输速率不同。CAN FD的速率可变,从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,最高速率可达到8Mbps。其他部分与CAN相同。
  2. 数据长度不同。CAN FD支持的最大数据长度为64byte。
  3. 帧格式不同。CanFD新增了FDF、BRS、ESI位

3.LIN

3.1 LIN总线简介

LIN总线的全称为Local Interconnect Network,是专门为汽车开发的一种低成本的串行通信网络,主要是为CAN总线网络提供辅助功能,应用场合有车门、方向盘、座椅、空调、照明、湿度传感器和交流发电机等。
LIN的一大优点是成本低,但其最大传输速率为20Kbps。
建议的通信速率如下,低速2400bps,中速9600bps,高速19200bps。

3.2 LIN总线特点

  1. 单主控器/多从设备模式,无需仲裁机制
  2. 基于通用UART接口几乎所有微控制器都具备LIN必需的硬件
  3. 从机节点不需要石英或陶瓷振荡器就能实现自同步,节省了从设备的硬件成本
  4. 信号传播时间可预先计算出来的确定性信号传播
  5. 低成本单线实现方式
  6. 传输速率最高可达20kb/s
  7. 不需要改变LIN从节点的硬件和软件就可以在网络上增加节点
  8. 通常一个LIN上节点数目小于12个,共有64个标志符
  9. 极少的信号线即可实现国际标准ISO 9141的规定

4. FlexRay

4.1 FlexRay简介

FlexRay是一种用于汽车的高速、可确定性的,具备故障容错能力的总线技术,它将事件触发时间触发两种方式结合起来,具有高效的网络利用率和系统灵活性的特点。满足传统的CAN方案不能满足汽车线控系统(X-by-Wire)的要求

宝马和戴姆勒克莱斯勒联合飞利浦和摩托罗拉成立了FlexRay联盟,这个联盟 (FlexRay Consortium)推进了FlexRay的标准化,使其成为高级动力总成、底盘、线控系统的标准协议。主要用于线控操作,如,线控操作转向、防抱死制动系统(ABS)包括车辆稳定控制(VSC)和车辆稳定助手(VSA)等。

FlexRay联盟在2013年发布了ISO 17458标准规范。

第一款采用FlexRay的量产车于2006年在BMW X5中推出,应用在电子控制减震系统中。

4.2 FlexRay特点

  1. 高传输速率:FlexRay的每个信道具有10Mbps带宽。它不仅可以像CAN和LIN总线这样的单信道系统运行,而且还可以作为一个双信道系统运行,因此可以达到20Mbps的最大传输速率,是当前CAN最高运行速率的20倍;

  2. 同步时基:FlexRay中使用的访问方法是基于同步时基的。该时基通过协议自动建立和同步,并提供给应用。时基的精确度介于0.5μs和10μs之间(通常为1~2μs);

  3. 确定性:通信是在不断循环的周期中进行的,特定消息在通信周期中拥有固定位置,因此接收器已经提前知道了消息到达的时间。到达时间的临时偏差幅度会非常小,并能得到保证;

  4. 高容错:强大的错误检测性能和容错功能是FlexRay设计时考虑的重要方面。FlexRay总线使用循环冗余校验CRC(Cyclic redundancy cheek)来检验通信中的差错。FlexRay总线通过双通道通信,能够提供冗余功能,并且使用星型拓扑可完全解决容错问题;

  5. 灵活性:在FlexRay协议的开发过程中,主要关注的是灵活性,反映在如下几个方面:

支持多种方式的网络拓扑结构;
消息长度可配置:可根据实际控制应用需求,为其设定相应的数据载荷长度;
使用双通道拓扑时,既可用以增加带宽,也可用于传输冗余的消息;
周期内静态、动态消息传输部分的时间都可随具体应用而定。

  1. 可靠性:在汽车要求的工作环境下可靠工作,体现在下面几个方面:

满足汽车使用的温度环境要求 在不使用外部滤波器条件下
每个FlexRay产品满足汽车系统和法规要求的EMC指标
直接与线束相连的总线控制器和通信控制器的输入/输出,满足汽车上电器系统的要求

5. MOST

MOST总线的全称为Media oriented system transport ,媒体导向的串行传输,是一种专门针对车内使用而开发的、主要用于多媒体传输的数据总线技术。例如,可以将导航娱乐系统的地图或者MP3的封面轻松地传给仪表盘。

6.Ethernet

Ethernet以太网,在计算机如此普及的当下,每天都会用到以太网。但这里介绍的以太网是车载以太网。传输速率100Mb/s,具有高带宽、高传输数率、高安全性等特点,未来可能会成为整车总线的主流,主要应用在:中央域控制器、智能座舱域、自动驾驶域、网关等。

三、总结

各车载总线的重要特征对比


参考资料

《CANoe开发从入门到精通》

最后欢迎大家关注我的“工种号”,【嵌入式老林】,一起交流

有关常用车载总线CAN、CAN FD、LIN、FlexRay、Ethernet介绍的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  3. ruby CSV : How can I read a tab-delimited file? - 2

    CSV.open(name,"r").eachdo|row|putsrowend我得到以下错误:CSV::MalformedCSVErrorUnquotedfieldsdonotallow\ror\n文件名是一个.txt制表符分隔文件。我是专门做的。我有一个.csv文件,我转到excel,并将文件保存为.txt制表符分隔的文件。所以它是制表符分隔的。CSV.open不应该能够读取制表符分隔的文件吗? 最佳答案 尝试像这样指定字段分隔符:CSV.open("name","r",{:col_sep=>"\t"}).eachdo|row|

  4. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  5. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  6. ruby - 混帐 & ruby : How can I unset the GIT_DIR variable from inside a ruby script? - 2

    我编写了一个非常简单的“部署”脚本,作为我的裸git存储库中的post-updateHook运行。变量如下livedomain=~/mydomain.comstagingdomain=~/stage.mydomain.comgitrepolocation=~/git.mydomain.com/thisrepo.git(bare)core=~/git.mydomain.com/thisrepo.gitcore==addedremoteintoeachlive&stagegitslive和stage都初始化了gitrepos(非裸),我已经将我的裸仓库作为远程添加到它们中的每一个(名为co

  7. ruby-on-rails - 在 Ruby 或 Rails 中,hash.merge({ :order => 'asc' }) can return a new hash with a new key. 什么可以返回带有已删除键的新散列? - 2

    在Ruby(或Rails)中,我们可以做到new_params=params.merge({:order=>'asc'})现在new_params是一个带有添加键:order的散列。但是是否有一行可以返回带有已删除key的散列?线路new_params=params.delete(:order)不会工作,因为delete方法返回值,仅此而已。我们必须分3步完成吗?tmp_params=paramstmp_params.delete(:order)returntmp_params有没有更好的方法?因为我想做一个new_params=(params[:order].blank?||para

  8. ruby - 类型错误 : can't convert String into Integer - 2

    我有代码:classScenedefinitialize(number)@number=numberendattr_reader:numberendscenes=[Scene.new("one"),Scene.new("one"),Scene.new("two"),Scene.new("one")]groups=scenes.inject({})do|new_hash,scene|new_hash[scene.number]=[]ifnew_hash[scene.number].nil?new_hash[scene.number]当我启动它时出现错误:freq.rb:11:in`[]'

  9. 电脑怎么截图?进来看(8种常用截图方法) - 2

    电脑上可以截取图片吗?如果可以,该如何操作呢?相信很多小伙伴都只知道一两种截图的方式,知道的并不全面。其实,电脑上有多种方式截图的,而且非常方便。电脑怎么截图?今天我们就来教大家如何使用电脑截取图片的8种常用方式!操作环境:演示机型:Delloptiplex7050系统版本:Windows10方法一:系统自带截图具体操作:同时按下电脑的自带截图键【Windows+shift+S】,可以选择其中一种方式来截取图片:截屏有矩形截屏、任意形状截屏、窗口截屏和全屏截图。 方法二:QQ截图具体操作:在电脑登录QQ,然后同时按下【Ctrl+Alt+A】,可以任意截图你需要的界面,可以把截图的页面直接下载,

  10. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

随机推荐