汽车网络架构与常用总线汇总

汽车CAN总线简述

CAN 是控制器局域网Controller Area Network 的缩写,1986年,由德国Bosch公司为汽车开发的网络技术,主要用于汽车的监测与控制,目的为适应汽车“减少线束的数量”“通过多个网络进行大量数据的高速传输”的需求。

在这里插入图片描述

CAN发展时间线

  • 1983年,Bosch开始研究汽车网络技术
  • 1986年,Bosch在SAE大会正式公布CAN协议
  • 1987年,Intel和Philips先后推出CAN控制器芯片
  • 1991年,Bosch颁布CAN 2.0技术规范,CAN总线最先在Benz S系列轿车上实现
  • 1993年,ISO颁布CAN国际标准ISO-11898
  • 1994年,由CiA组织举办第一届国际CAN大会(iCC)
  • 2005年,CiA在中国的第一场CAN研讨会
  • 2013年,虹科与CiA正式深入合作致力CAN推广
  • 2015年,CAN FD的 ISO标准化
  • 2020年,CAN XL即将登场第十七届iCC大会

汽车网络是将汽车上所有电子传感器、执行器和电子控制单元(ECU)连接组网的通信形式。根据通信速率,汽车工程师协会(SAE)定义了如下类别的汽车网络。

在这里插入图片描述

当前的车用总线:

  • CAN(CANFD)
  • LIN
  • MOST
  • FlexRay
  • 车载以太网

在这里插入图片描述

通常汽车CAN网络细分

  • 动力CAN网络
  • 车身CAN网络
  • 组合仪表CAN网络
  • 诊断CAN网络

在这里插入图片描述

汽车网络典型应用

GLOF整车CAN网络拓扑

在这里插入图片描述

在这里插入图片描述


CAN总线在汽车网络中脱颖而出的“秘密”

曾经的车用总线

  • SAE J1850(Class2)
  • SAE J1708
  • K-Line
  • BEAN
  • Byte flight
  • D2B…

CAN通信特性的“公开秘密”

  1. 节点间采用多主通信方式
  2. 采用短帧结构,报文帧的有效字节数为8个,可达汽车实时响应要求
  3. 报文ID值越小,优先级越高。报文ID可分成不同的优先级,进一步满足汽车网络报文的实时性要求。
  4. 非破坏性总线仲裁处理机制。
  5. 可靠的CRC校验方式,传输数据出错率极低,满足汽车数据传输的可靠性要求。
  6. 报文帧仲裁失败或传输期间被破坏有自动重发(机制)。
  7. 节点在错误严重的情况下,具有自动脱离总线的功能,切断它与总线的联系,不影响总线的正常工作。
  8. 通信距离最远达10km(速率5Kbps以下)
  9. 通信速率最高1MB/s(此时距离最长40m)
  10. 节点数实际可达110个
  11. CAN节点设计成本较低,通信介质采用双绞线

OSI模型与CAN的关系

在这里插入图片描述


CAN收发器

定义:CAN收发器逻辑信号和物理信号之间的转换采用差分电平方式

  1. 将逻辑数字信号转换成物理信号
  2. 将物理信号转换成逻辑数字信号
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

CAN信号电平

CAN总线有ISO11898和ISO11519(低速容错CAN)两个标准

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


CAN编码方式 -> NRZ(非归零)

CAN编码采用NRZ非归零编码,相同带宽情况下,NRZ编码方式的信息量更大

在这里插入图片描述

CAN信号电平 -> 双绞线

问题:为什么要采用两根线(双绞线)的差分电平信号?

原因:双绞线传输差分信号时受到共模信号干扰后,电平差值不变,信号解码正常。

在这里插入图片描述

在这里插入图片描述

CAN信号电平 -> 线与原理

多个CAN节点并接到同一总线时,只要其中一个节点输出低电平,总线就为低电平;当所有节点输出高电平时,总线才为高电平。

在这里插入图片描述


CAN -> 异步串行通信

同步串行通信

在这里插入图片描述

异步串行通信

在这里插入图片描述
异步串行通信省去了时钟信号线,但遇到一个问题是:根据波特率做采样,波特率的误差会产生通信错误!


CAN -> 波特率误差带来的错误

在这里插入图片描述

问题:如何减少波特率的误差带来的通信错误?

解决:CAN总线规定信号的跳变沿时刻进行同步,将误差累计限制在两个跳变沿。

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

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

相关文章

TA百人计划学习笔记 3.1.1模板测试

资料 源视频 【技术美术百人计划】图形 3.1 深度与模板测试 传送门效果示例_哔哩哔哩_bilibili ppt 3100-模板测试与深度测试(1) 参考 Unity Shader: 理解Stencil buffer并将它用于一些实战案例(描边,多边形填充,反射区域限定,阴影…

c++学习笔记-STL案例-机房预约系统6-老师模块

前言 衔接上一篇“c学习笔记-STL案例-机房预约系统5-学生模块”,本文主要设计老师模块,从,老师登录和注销、查看所有预约、审核预约三个方面进行分析和实现。 目录 9 教师模块 9.1 教师登录和注销 9.1.1 构造函数 9.1.2 教师子菜单 ​编…

Linux7 安装 Oracle 19C RAC 详细图文教程

实战篇:Linux7 安装 Oracle 19C RAC 详细图文教程 本文是按照:https://www.modb.pro/db/154424的思路进行编写 一、安装前规划 安装RAC前,当然要先做好规划。具体包含以下几方面: 节点主机版本主机名实例名Grid/Oracle版本Publi…

鸿蒙原生开发-仿ChatGPT应用实战

运行环境 DAYU200:4.0.10.16 SDK:4.0.10.15 IDE:4.0.600 前言 在配置好环境之后,可以尝试这编写一个较为简单的应用程序练练手,这里选择使用一个免费的API接口网站 ALAPI来尝试编写一个可进行对话的GPT应用程序。 创建项目 …

SQL注入示例

例一、基础SQL注入:load_file读文件 CISP-PTE 认证考试 首先是有单引号和括号的,首要是要闭合,然后回显点是在-1的位置,读取文件上面的key的话使用的是load_file(/tmp/360/key) id-1)%09ununionion%09select%091,2,3,load_file…

【算法与数据结构】322、LeetCode零钱兑换

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题可以抽象成一个完全背包问题。 第一步, d p [ j ] dp[j] dp[j]的含义。 d p [ j ] dp…

Unity之Cinemachine教程

前言 Cinemachine是Unity引擎的一个高级相机系统,旨在简化和改善游戏中的相机管理。Cinemachine提供了一组强大而灵活的工具,可用于创建令人印象深刻的视觉效果,使开发人员能够更轻松地掌控游戏中的摄像机行为。 主要功能和特性包括&#x…

用Python画出漂亮的地图

用Python画出漂亮的地图 地图可视化是数据分析和地理信息系统中的重要环节。Python提供了多个强大的库,如Folium、Matplotlib、Geopandas等,使得创建漂亮而具有信息量的地图变得简单而灵活。本文将详细介绍如何使用这些库绘制漂亮的地图,并提…

C++ STL库详解:list的详细模拟实现

一、前言 在详细学习并学习c后,我们对stl库的例如vector、list、string都有了详细的了解,对模板的使用以及类和对象都有了熟练的掌握,而实践才是检验真理的唯一标准,在此片博客中,将利用先前学过的各模块知识来对list…

Springboot+vue的医院后台管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的医院后台管理系统(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的医院后台管理系统,采用M&#xff08…

Java实现 OPC Ua Server服务器创建

前言 我们除了使用KEPServerEX6 创建OPC Ua Server 服务器以外,还可以使用 开源项目org.eclipse.milo 创建一个java项目OPC Ua Server的服务。相对于KEPServerEX6 属于收费的商用版本来说,后者更为简单轻便。下面附加代码和文字说明,教你如何创建一个OPC Ua Server的java服…

vue多层组件监听 v-bind=“$attrs“,v-on=“$listeners“

高层级向低层级传值 v-bind“$attrs” v-bind"$attrs"主要用于高层组件向低层组件隔代传值。 假如有 父组件A,子组件B,孙组件C 三个组件。 A组件中的值需要直接传给C组件,那么就需要在B组件中设置v-bind“$attrs”,然…

LeetCode、875. 爱吃香蕉的珂珂【中等,最小速度二分】

文章目录 前言LeetCode、875. 爱吃香蕉的珂珂【中等,最小速度二分】题目及分类思路分析及代码实现代码优化 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Ja…

如何修改flutter的minSdkVersion版本?

在使用第三方插件的时候,插件对最低的 minSdkVersion版本是有要求的,你比如flutter 插件 webview_flutter 就会报一下错: minSdkVersion 16 cannot be smaller than version 19 declared in library 解决方法①: 这个时候我们需…

Flutter 屏幕适配之相对尺寸适配

在Android中我们可以通过脚本来动态生成适配于各个厂商的屏幕的相对尺寸。 那么在Flutter中我们如何通过相同的思路来实现同样的效果呢?我们知道,Android的每个厂商的屏幕大小存在非常大区别。有些长,有的短,有的粗,有…

Python爬虫框架选择与使用:推荐几个常用的高效爬虫框架

目录 前言 一、Scrapy框架 1. 安装Scrapy 2. Scrapy示例代码 3. 运行Scrapy爬虫 二、Beautiful Soup库 1. 安装Beautiful Soup 2. Beautiful Soup示例代码 3. 运行Beautiful Soup代码 三、Requests库 1. 安装Requests库 2. Requests示例代码 3. 运行Requests代码 …

【蓝桥杯--图论】最小生成树prim、kruskal

今日语录&#xff1a;成功不是终点&#xff0c;失败不是致命&#xff0c;勇气才是取胜的关键。 文章目录 prim算法kruskal算法(稀疏图) prim算法 #include <cstring> #include <algorithm> #include <iostream>#define _CRT_SECURE_NO_WARNINGS using names…

8 种网络协议

什么是网络协议&#xff1f; 网络协议就是计算机之间沟通的语言&#xff0c;为了有效地交流&#xff0c;计算机之间需要一种共同的规则或协议&#xff0c;就像我们和老外沟通之前&#xff0c;要先商量好用哪种语言&#xff0c;要么大家都说中文&#xff0c;要么大家都说英语&a…

微信小程序实现长按 识别图片二维码

第一种方案&#xff08;只需要在image里面加一个属性就可以了&#xff09; show-menu-by-longpress“{{true}}” <image show-menu-by-longpress"{{true}}" src"{{sysset.dyqewm}}" />第二种方案 放大预览图片&#xff0c;长按识别二维码 wxml <…

数灵通实现抖音跳转企业微信啦

抖音是一款流行的短视频应用&#xff0c;用户可以通过简洁、有趣的短视频形式创作和分享内容。 对于企业而言&#xff0c;抖音拥有庞大的用户基础和广泛的影响力&#xff0c;因此企业希望能够利用抖音的平台来推广自己的企业微信账号&#xff0c;与用户建立更紧密的沟通和联系…