can差分线阻抗_CAN最全知识点汇总

2023-11-05

        最近在学习CAN通讯,花费好多时间搜索资料,网络上大多数资料都是泛泛而谈,或者只是将CAN标准的文字罗列出来,看起来不够直观。不过,也找到了一些写的很好的资料,我将这些资料中对CAN知识点描述比较好的部分汇总起来并在某些地方添加一些例子,方便大家阅读,省去大家搜索查找各种文献的时间,提高效率。

1.什么是CAN

 CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO 国际标准化的串行通信协议。它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11898-1/ISO11519-2),是国际上应用最广泛的现场总线之一[1]。

CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。由于它具有的高可靠性和良好的错误检测能力而受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强及振动大的工业环境[1]。

在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议[2]。

现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面[2]。图 1 是车载网络的构想示意图。该车型有4个CAN网络构成,分别是传动CAN网段、混动CAN网段、车身CAN网段、和底盘CAN网段。

8a7f01e6e29904ae20ae72fc8f5deb19.png                         

1车载网络示意图

2. CAN网络协议

2.1 CAN协议与OSI模型

国际标准化组织ISO提出了一套网络体系结构模型,称为开放系统互联参考模型(Open Systems Interconnection,简称OSI),CAN协议也是基于该模型打造出来的。首先,来回顾一下ISO的OSI模型,见表1。

表1 OSI模型

ISO/OSI 基本参照模型

各层定义的主要项目

软件控制

7 层:应用层

由实际应用程序提供可利用的服务。

6 层:表示层

进行数据表现形式的转换。

如:文字设定、数据压缩、加密等的控制

5 层:会话层

为建立会话式的通信,控制数据正确地接收和发送。

4 层:传输层

控制数据传输的顺序、传送错误的恢复等,保证通信的品质。如:错误修正、再传输控制。

3 层:网络层

进行数据传送的路由选择或中继。

如:单元间的数据交换、地址管理。

硬件控制

2 层:数据链路层

将物理层收到的信号(位序列)组成有意义的数据,提供传输错误控制等数据传输控制流程。

如:访问的方法、数据的形式。

通信方式、连接控制方式、同步方式、检错方式。

应答方式、通信方式、包(帧)的构成。

位的调制方式(包括位时序条件)。

1 层:物理层

规定了通信时使用的电缆、连接器等的媒体、电气信号规格等,以实现设备间的信号传送。

如:信号电平、收发器、电缆、连接器等的形态。

CAN 协议只涵盖了 ISO 规定的 OSI基本参照模型中的传输层、数据链路层及物理层。数据链路层可以分为2个子层:LLC : Logical LinkControl (逻辑链路控制层)和MAC : Medium Access Control (媒介访问控制层)。CAN网络协议与ISO的OSI模型的对照如图2所示[2]。

d34a530ab4ea105a74cb9e89d0dc52db.png

图2 CAN协议与OSI对照图(图片来自参考文献2)

数据链路层的功能是将物理层收到的信号组织成有意义的消息,并提供传送错误控制等传输控制的流程。具体地说,就是消息的帧化、仲裁、应答、错误的检测或报告。数据链路层的功能通常在 CAN 控制器的硬件中执行。

2.2 博世CAN协议与ISO相应标准

前面曾提到CAN通讯最早是由博世公司提出的,最终发展成为ISO标准。博世发布的CAN2.0规范分为A和B两个部分,A 部分是对CAN 的报文格式说明,B 部分是对标准格式和扩展格式的说明。为了兼容CAN2.0,要求CAN 的仪器应兼容A 部分或B 部分。博世公司的CAN协议规范英文版可以在附录中给出的网址下载,其中文翻译版由周立功公司提供,可以在相应网站下载。

CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898 和 ISO11519-2 标准对于数据链路层的定义相同,但物理层不同[2]。

(1) 关于 ISO11898-1

ISO11898 是通信速度为 125kbps-1Mbps 的 CAN 高速通信标准。

目前,ISO11898 追加新规约后,成为 ISO11898-1 新标准。

(2) 关于 ISO11519-2

ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准。

ISO11519-2 是 ISO11519-1 追加新规约后的版本[2]。

图 3表示 CAN 协议和 ISO11898 及 ISO11519-2 标准的范围。

49e655e33505aed1469d4fb0fbc30359.png

图3 CAN 协议和 ISO11898 及 ISO11519-2 标准(图片来自参考文献2)

2.3 CAN协议物理层

与I2C、SPI等具有时钟信号的同步通讯方式不同,CAN通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有CAN_High和CAN_Low两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。 CAN物理层的形式主要分为闭环总线(ISO11898)及开环总线网络(ISO11519-2)两种,一个适合于高速通讯,一个适合于远距离通讯。接下来将讨论两者在物理层的主要区别[1]。

下图4给出了CAN总线两种形式的连接图,后续将分别进行介绍。图中总线端部均有负载电阻RL,这些电阻用来抑制反射作用。一般不要把RL置于ECU内部,因为这样的话,断开一个内部置有RL的ECU同总线的链接时,总线就会失去终端[3]。

d07f883f09139f56f793ea7a794272ae.png

图4 CAN 总线及节点连接(图片来自参考文献2)

下图5给出了CAN网络的通信速度与总线长度的关系曲线

aefa028bd03caf0cbc74c3397e6dca2d.png

图5通信速度和最大总线长度(图片来自参考文献2)

2.3.1 闭环总线网络

CAN闭环通讯网络是一种遵循ISO11898标准的高速、短距离网络,它的总线最大长度为40m,通信速度最高为1Mbps,总线的两端各要求有一个“120欧”的电阻,如图6所示。

b526322d6de0b55fa4bd7cf89d8dcc7d.png

图6 CAN闭环总线通讯网络(图片来自参考文献1)

2.3.2 开环总线网络

CAN开环总线网络是遵循ISO11519-2标准的低速、远距离网络,它的最大传输距离为1km,最高通讯速率为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个“2.2千欧”的电阻。

ec82e7b39fcf2fd6b24a8f9842e1d24d.png

图7 CAN开环总线通讯网络(图片来自参考文献1)

2.3.3 CAN协议中的差分信号

CAN总线上可以挂载多个通讯节点,节点之间的信号经过总线传输,实现节点间通讯。由于CAN通讯协议不对节点进行地址编码,而是对数据内容进行编码,所以网络中的节点个数理论上不受限制,只要总线的负载足够即可,可以通过中继器增强负载[1]。

        CAN通讯节点由一个CAN控制器及CAN收发器组成,控制器与收发器之间通过CAN_Tx及CAN_Rx信号线相连,收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。其中CAN_Tx及CAN_Rx使用普通的类似TTL逻辑信号,而CAN_High及CAN_Low是一对差分信号线,使用比较特别的差分信号[1]。

        当CAN节点需要发送数据时,控制器把要发送的二进制编码通过CAN_Tx线发送到收发器,然后由收发器把这个普通的逻辑电平信号转化成差分信号,通过差分线CAN_High和CAN_Low线输出到CAN总线网络。而通过收发器接收总线上的数据到控制器时,则是相反的过程,收发器把总线上收到的CAN_High及CAN_Low信号转化成普通的逻辑电平信号,通过CAN_Rx输出到控制器中[1]。

    那问题来了,什么是差分信号?图8给出了模电中差模信号的标示方法。差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,使用差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表示逻辑0和逻辑1[1]。

8300fcea6b67ada2a4ab767601e56b9f.png

图8 差模信号

为什么选择差分信号,差分信号有什么优点呢?

相对于单信号线传输的方式,使用差分信号传输具有如下优点[1]:

  • 抗干扰能力强,当外界存在噪声干扰时,几乎会同时耦合到两条信号线上,而接收端只关心两个信号的差值,所以外界的共模噪声可以被完全抵消。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

can差分线阻抗_CAN最全知识点汇总 的相关文章

  • Zabbix的模板管理与配置

    Zabbix的模板管理与配置 一 查看默认模板的配置项 1 打开客户端信息配置界面 2 选择默认模板的监控项 二 服务端获取客户端的监控项 1 获取客户端系统相关监控项 2 获取客户端硬盘信息等相关监控项 三 创建自定义监控项的key 1
  • unity的lineRenderer

    本文转载自 http blog csdn net zuoyamin article details 8997729 LineRenderer线渲染器主要是用于在3D中渲染线段 虽然我们也可以使用GL图像库来渲染线段 但是使用LineRend
  • MCP2515板级驱动

    MCP2515板级驱动 前言 一 MCP2515简述 二 硬件连接 三 驱动源码 前言 在需要多路CAN接口应用场景 可选方案一般为带CAN接口的协处理器或者是独立的CAN控制器 独立的CAN控制器常用的有SJA1000 MCP2515等
  • 工具、学习网站

    目录 图片处理工具 1 BgRemover 在线图片去底工具 2 Convertio 文件转换器 3 视频转音频 4 视频转 Gif 5 传图识色 6 本地图片在线存储引用 Image Upload 7 RGB CMYK 转换工具 各大工具
  • 单链表实现

    代码 编写程序实现单向链表数据结构 public class Node Object data Node next public class MyLinkedList Node header 添加数据的方法 删除数据的方法 修改数据的方法
  • 【精】【Java8】===两个List集合取交集、并集、差集

    业务场景 根据用户查询权限 入参 UserCode lastQueryTime 上次查询时间 出参 权限变化的列表 oldList 上次查询到的权限列表 currList 当前查询到的权限列表 比对两个list找出 移除和增加的权限加以标识
  • Idea登录Github invalid authentication data. 404 Not Found-Not Foun

    转发地址 点击我
  • 用git拉代码

    1 新建远程仓库 下载和安装git 傻瓜方式next 登录或注册账号 进入界面创建仓库 1 2添加ssh公钥并下载项目 用vscode打开随便建一个文件 1 3git创建分支和切换分支 相当于分支是队员们的一套代码 主支是组长的 队员在分支
  • Springboot Thymeleaf Html转Pdf

    新建项目 说明 用itextpdf写pdf 样式实在是太折磨了 这里选用Thymeleaf模板生成html转pdf html css写样式排版好太多了 引入依赖
  • python爬虫--beautifulsoup使用介绍

    简单来说 Beautiful Soup是python的一个库 最主要的功能是从网页抓取数据 官方解释如下 Beautiful Soup提供一些简单的 python式的函数用来处理导航 搜索 修改分析树等功能 它是一个工具箱 通过解析文档为用
  • 如何解决 Spring JPA @Table 和 @Column 失效的问题

    问题 下面的代码 我们使用 Spring JPA 作为数据库访问层 并且用 Table 和 Column 定义了表和列名 但是 Hibernate 给出的 SQL 语句并没有使用我们定义的名称 节点 Entity Table name No
  • 2021江苏连云港高考成绩查询时间,2021连云港市地区高考成绩排名查询,连云港市高考各高中成绩喜报榜单...

    距离2018年高考还有不到一个月的时间了 很多人在准备最后冲刺的同时 也在关心高考成绩 2018各地区高考成绩排名查询 高考各高中成绩喜报榜单尚未公布 下面是往年各地区高考成绩排名查询 高考各高中成绩喜报榜单 想要了解同学可以参考下 同时关
  • 实现vector--模板

    在这里 我把类函数定义与声明分开了 以下是类定义与类函数的声明 vector h pragma once include
  • iOS APP上架流程详解

    iOS APP上架流程详解 前言 作为一名 iOS 开发工程师 APP 的上架是必备技能 iOS 上架的流程主要可以简单总结为 一个包 两个网址 三个证书 一个包 iPA 包 上架用的 两个网址 1 gt https itunesconne
  • 【管理篇 / 配置】❀ 06. 日志与监控 ❀ FortiGate 防火墙

    简介 在这个实验里 你将在FortiGate飞塔防火墙本地配置日志设置 配置警告邮件和显示日志 在防火墙上配置日志 为了记录网络活动 你必须在FortiGate配置日志 在这人练习里 你将配置日志设置 包括威胁权重以及在防火墙启用日志 使用
  • 【BUG】Windows配置spark运行cmd时报错:WARN ProcfsMetricsGetter: Exception when trying to compute pagesize,...

    报错 WARN ProcfsMetricsGetter Exception when trying to compute pagesize as a result reporting of ProcessTree metrics is st
  • CTF.show:web11

    代码审计
  • 8.29网络编程作业

    include
  • MySQL存储引擎

    MySQL自我学习路线 一 存储引擎概述 二 MySQL常用存储引擎 1 MyISAM 节省空间 1 1 特点 2 InnoDB 默认引擎 安全 2 1 特点 3 MEMORY 查询快 3 1 特点 三 存储引擎的选择 一 存储引擎概述 数

随机推荐

  • Java是如何实现跨平台功能的?

    Java是一种高级编程语言 最初被设计为能够在任何计算机上运行 而不受硬件和操作系统的限制 它实现了跨平台功能的方式是使用Java虚拟机 JVM 本文将介绍Java是如何实现跨平台功能的 Java虚拟机 JVM 在Java中 源代码是编写在
  • Verdi/Coverage tool 学习 第1节(入门篇)

    目录 1 Verdi Coverage 工具概述 2 VCS使用实例 3 VCS中的覆盖率分析 3 1 覆盖率类型 3 2 Coverage Database的产生 3 3 其他的vcs编译和仿真中的选项 3 4 有时需要Merge 多个C
  • arch linux 文档下载_技术茶话会

    1 安装适用于 Linux 的 Windows 子系统 在安装适用于 WSL 的任何 Linux 分发版之前 必须确保已启用 适用于 Linux 的 Windows 子系统 可选功能 1 以管理员身份打开 PowerShell 并运行 Po
  • C#异常总结

    C 异常总结 定义 Try语句 异常类 创建用户自定义异常 搜索调用栈的示例 异常抛出 定义 程序中的运行时错误 它违反一个系统约束或应用程序约束 或出现了在正常操作时未预料的情形 Try语句 指明被异常保护的代码块 并提供代码以处理异常
  • [转载-Cayden推荐-好文章]【国产替代】盘点下我所认知的国产MCU

    国产替代 盘点下我所认知的国产MCU 电子元件涨价和缺货是多少嵌入式工程师的痛 一年内上游厂家晶圆产能告急能有数十次之多 而MCU更是重灾区 且不说国内有超75 的市场都是被国外产品占据 就是本国内的代理和供应商也是漫天要价 而交期更是长达
  • POJ--2389:Bull Math 大数乘法

    题目源地址 http poj org problem id 2389 程序源代码 include
  • 力扣OJ(0801-1000)

    目录 802 找到最终的安全状态 805 数组的均值分割 809 情感丰富的文字 810 黑板异或游戏 813 最大平均值和的分组 817 链表组件 822 翻转卡片游戏 823 带因子的二叉树 827 最大人工岛 837 新 21 点 8
  • 知识图谱入门一:知识图谱介绍

    注 欢迎关注datawhale https datawhale club 系列 知识图谱入门一 知识图谱介绍 知识图谱入门2 1 实践 基于医疗知识图谱的问答系统 知识图谱入门2 2 用户输入 知识库的查询语句 知识图谱入门2 3 Neo4
  • 性能测试【一】

    目录 为什么要进行性能测试 性能测试关注什么 系统性能测试的流程 如何确定性能测试的需求 关键性能指标分析 关键业务分析 谁关注性能 概念 并发用户数 响应时间 RT 平均响应时间 ART 事务响应时间 TRT 每秒事务通过数 TPS 点击
  • 每日记录的名句

    每日记录的名句 学而优则仕 因为我比昨天更成熟了
  • vue 实现自定义主题切换+日夜切换

    不多废话 直入主题 文末会附上git代码链接 自定义主题切换 概述 一般主题切换为两种需求 主题色切换 日夜切换 主题色切换 基于elementUI 1 最开始想的是直接通过 el style setProperty el color pr
  • 【2023最新】LVGL 拖控件SquareLine Studio 激活安装教程(附工具,亲测有效)

    SquareLine Studio是LVGL拖控件开发界面 可以便捷地设计界面并一键生成C代码和python代码导出 目前支持的LVGL版本为8 2和8 3 6 安装不登录即可试用使用 个人版有5个屏幕 50控件限制 此教程支持window
  • 亲密关系-【舒适退出】-减少伤害的终局沟通

    一段关系的终结可能有很多原因 退出本质是一场自我沟通 想清楚 少后悔 不绝望 案例 三观不合 男朋友大男子主义 要分手 对方解释 保证 来回好几次 筋疲力尽 你根据什么得出三观不合的结论 你认为更值得相信的 究竟是自己的观察 还是对方的解释
  • frpc windows客户端启动报EOF的问题

    frpc windows客户端使用启动命令 frpc exe c frpc ini启动时会报错EOF 如下图 此时查看frpc log日志 可以发现报错为 也就是连接frps服务端失败了 可以在frpc ini配置文件中添加一行配置 也就是
  • tomcat 配置环境变量

    最近换电脑 备注一下 tomcat 环境变量配置 1 官网下载 tomcat 并解压 tomcat官网 https tomcat apache org 选择要下载的版本 下载 根据自己的电脑环境选择下载 笔者电脑是64位windows 下载
  • 基于邻接矩阵的广度优先搜索遍历

    数据结构实验图论一 基于邻接矩阵的广度优先搜索遍历 Time Limit 1000MS Memory limit 65536K 题目描述 给定一个无向连通图 顶点编号从0到n 1 用广度优先搜索 BFS 遍历 输出从某个顶点出发的遍历序列
  • Mybatis常用代码

    以下使用的数据库是Mysql Mybatis字段类型映射 在resultMap 中定义数据库字段对应的字段类型
  • C++ 类 :有参数构造函数与无参数构造函数使用注意事项

    构造函数的作用是在创建类的对象时进行类对象初始化的 在 C 中 每个类都有且必须有构造函数 如果用户没有自行编写构造函数 则 C 自动提供一个无参数的构造函数 称为默认构造函数 这个默认构造函数不做任何初始化工作 一旦用户编写了构造函数 则
  • BufferReader与BufferInputStream 区别及用法

    以reader结尾的都是以字符方式读入 而以stream结尾的都是字节形式 import java io BufferedReader import java io FileInputStream import java io IOExce
  • can差分线阻抗_CAN最全知识点汇总

    最近在学习CAN通讯 花费好多时间搜索资料 网络上大多数资料都是泛泛而谈 或者只是将CAN标准的文字罗列出来 看起来不够直观 不过 也找到了一些写的很好的资料 我将这些资料中对CAN知识点描述比较好的部分汇总起来并在某些地方添加一些例子 方