从零读懂CAN总线(上)

2023-11-02

概要

上世纪八十年代以来,汽车ECU越来越多,如ABS,电控门窗,电子燃油喷射装置。如果仍然采用常规的点对点布线方式,即电线一段与开关相接,另一端与用电设备相通,将会导致车上电线数目的急剧增加,从而带来线束的冗余及维修成本的提高。这就对汽车的线束分布及信息通讯提出了更高的要求。总线技术可以实现信息的实时共享,解决了传统布线方式中线束多,布线难,成本高等问题,CAN(Controller Area Network)总线技术应运而生。

点对点通信

总线通信

CAN总线是由德国研发和生产汽车电子产品著称的BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。CAN总线是一种多主控(Multi-Master)的总线系统。传统总线系统如USB或以太网等是在总线控制器的协调下,实现从A节点到B节点大量数据的传输。CAN网络的消息是广播式的,即在同一时刻网络上所有节点侦测的数据是一致的,它是一种基于消息广播模式的串行通信总线。

 

CAN总线的很多优点,使得它得到了广泛的应用,如传输速度最高到1Mbps, 通信距离最远到10km,无损位仲裁机制,多主结构。

 

CAN总线标准

CAN总线标准之规定了物理层和数据链路层,至于应用层需要用户自定义。不同的CAN标准仅物理层不同。物理层和数据链路层:ISO11898;应用层:不同的应用领域使用不同的应用层标准。

 

 

CAN物理层

CAN拓扑网络

连接在CAN总线上的设备叫做节点设备(CAN Node),CAN网络的拓扑一般为线型。线束最常用的是双绞线,线上传输为对称的差分电平信号。下图为CAN总线网络示意图,节点主要包括Host、控制器和收发器。Host常集成有CAN控制器,CAN控制器负责处理协议相关功能,以减轻Host的负担。CAN收发器将控制器连接到传输媒介。通常控制器和总线收发器通过光耦或磁耦隔离,这样即使总线上过压损坏收发器,控制器和Host设备也可以得到保护。

在发送数据时,CAN控制器把要发送的二进制编码通过CAN_Tx线发送到CAN收发器,然后由收发器把这个普通的逻辑电平信号转化成差分信号,通过差分线CAN_High和CAN_Low输出到CAN总线网络。接收数据过程,相反。采用差分信号,可以取得更好的电磁兼容效果。因此,CAN总线物理传输媒介只需要两根线。

高速CAN总线最高信号传输速率为1Mbps,支持最长距离40m。ISO11898-2要求在高速CAN总线两段安装端接电阻RL(端接电阻一般为120Ω,因为电缆的特性阻抗为120 Ω,为了模拟无限远的传输线。)以消除反射。低速CAN最高速度只有125Kbps,所以ISO11898-3没有端接要求。

因为传输距离越大,信号时延也越大,为了保证消息的正确采样,总线上的信号速率相应也要下降。下图是推荐的信号速率与距离的关系。

CAN收发器

CAN总线分高速CAN和低速CAN,收发器也分为高速CAN收发器(1Mbps)和低速CAN收发器(125Kbps)。低速CAN也叫Fault
Tolerance CAN,指的是即使总线上一根线失效,总线依然可以通信。如同串口中的MAX3232用作电平转换,CAN收发器的作用则是把逻辑信号转换为差分信号。

差分信号

CAN总线采用差分信号传输,通常情况下只需要两根信号线就可以进行正常的通信。在差分信号中,逻辑0和逻辑1是用两根差分信号线的电压差来表示。当处于逻辑1,CAN_High和CAN_Low的电压差小于0.5V时,称为隐性电平(Recessive);当处于逻辑0,CAN_High和CAN_Low的电压差大于0.9V,称为显性电平(Dominant)。

高速CAN

低速容错CAN (Fault Tolerance CAN)

CAN总线遵从“线与”机制:“显性”位可以覆 盖“隐性”位;只有所有节点都发 送“隐性”位, 总线才处于“隐性” 状态。这种“线与”机制使CAN总线呈现显性优先的特性。

CAN总线连接器

下一部分将介绍CAN总线数据链路层,和CAN总线同步机制。

 

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

从零读懂CAN总线(上) 的相关文章

  • 学生作业形同虚设!ChatGPT作弊成风!OpenAI:正在自研审核工具

    本文来源 机器之心 编辑 泽南 蛋酱 对学生有负面影响 这么大责任 OpenAI 可担不起 语言生成模型来了 学校的作业会不会从此变得形同虚设 近日 纽约市教育官员宣布禁止学生在公立学校使用 ChatGPT 的事件引发了争论 语言模型自动生
  • 路由工作原理以及eNSP静态路由配置实验

    文章目录 一 路由器 1 1 什么是路由器 1 2 路由器工作原理以及功能 1 3 路由表 1 4 路由的种类 二 静态理由 三 eNSP静态路由实验 一 路由器 1 1 什么是路由器 路由器 Router 是连接两个或多个网络的硬件设备
  • 对el-table只做升降排序,去除中间默认状态

    概述 大家都知道 el table 排序存在升序 降序 默认不排序的状态 本次做项目时遇到了需要对表格进行排序的功能 要求排序时只对数据进行升序 降序排序 本次开发使用了 el table 组件 且去除了中间默认不排序状态 本次排序功能是后
  • windows下python3.9安装pycrypto成功总结

    用pip install pycrypto会提示 Microsoft Visual C 14 0 or greater is required 看了一些文章说要去下载安装vc 的运行环境 实测后 没什么用 有2个方法是可行的 1 pip i
  • [数据分析与可视化] Python绘制数据地图3-GeoPandas使用要点

    本文主要介绍GeoPandas的使用要点 GeoPandas是一个Python开源项目 旨在提供丰富而简单的地理空间数据处理接口 GeoPandas扩展了Pandas的数据类型 并使用matplotlib进行绘图 GeoPandas官方仓库
  • 刷脸支付利用线下流量是至关重要的

    微信刷脸 刷脸支付带出的新颖 便捷 有效以及安全的支付体验 是能够大大提高客户对刷脸商品的认可度和信赖度 刷脸收款不仅仅在收款过程中缩小时间 还将吸引消费者注意力的时间延长了5秒到8秒右左 这几秒就有很大的商业价值 是让顾客跟商家的经营生成

随机推荐

  • 分布式任务-数据批量新增数据库

    分布式 数据批量新增数据库 0 pojo package com mall order pojo import org apache commons lang3 builder ToStringBuilder import javax pe
  • vue3 transition 隐藏过渡,折叠过渡效果实现

    隐藏过渡 可以直接使用官方给出的例子 隐藏过渡效果 fade enter active fade leave active transition opacity 0 5s ease fade enter from fade leave to
  • Python使用pyechart绘制3d散点图

    代码 import numpy as np import pyecharts options as opts from pyecharts charts import Scatter3D if name main a np arange 1
  • Python 之pandas库的安装及库安装两方法总结

    如果你连续看了博主的各类Python的库引用 你会发现这都是套路 先上正儿八经的流程 后面一句话总结一下这些库的安装套路 不知道安装库的你们用的什么操作 请耐心看到最后哦 保证未来的安装一举成功 一 pandas库的安装 1 打开cmd窗口
  • 扩展Ribbon支持Nacos权重的三种方式

    Nacos支持权重配置 这是个比较实用的功能 例如 性能差的机器权重设低 性能好的机器权重设高 让请求优先打到性能高的机器上去 某个实例出现异常时 把权重设低 排查问题 问题排查完再把权重恢复 想要下线某个实例时 可先将该实例的权重设为0
  • Vue - 将页面内容下载为 pdf 格式文件(html2canvas + jspdf)

    Vue 将页面内容下载为 pdf 格式文件 html2canvas jspdf 一 安装所需依赖 二 htmlToPdfNew js 核心文件 三 组件使用方法 四 组件使用实例 一 安装所需依赖 npm install html2canv
  • Apache Beam的特点

    不多说 直接上干货 Apache Beam 有两大特点 1 统一了数据批处理 batch 和流处理 stream 编程范式 2 能在任何执行引擎上运行 它不仅为模型设计 更为执行一系列数据导向的工作流提供了统一的模型 这些工作流包括数据处理
  • unity游戏开发入门——加载场景的方式

    unity加载场景的四种方式分别是 1 Application LoadLevel 同步载入 如果当前场景为A 我们要切换到场景B unity会在切换场景的时候将场景B中的全部内容 场景B中全部的静态物体 不包含兴许代码中Instantia
  • unity C# 使用 action实现函数回调和 委托(Delegate)

    一 C 使用 action实现函数回调 1 1 声明一个方法 这个方法需要传递进去一个函数 并且这个传递进去的函数也是需要参数的 我们把它声明为Action
  • unity 计时器

    unity 计数器 计时器就是在游戏界面的时间 可以是一个正计时 也可以是倒计时 现在简单分享一下简单的计时代码 private void Update totalTime Time deltaTime if totalTime lt 0
  • SpringCloud的搭建

    SpringCloud的搭建 源码 Eureka的创建步骤 最终版为2021 5 23版本 每次提交对应下面的一个步骤 1 Eureka保证AP 2 Eureka的使用 Ribbon的使用步骤 最终版为2021 5 24版本 每次提交对应下
  • Hive SQL中的lateral view explode

    公众号后台回复 图书 了解更多号主新书内容 作者 胖里 来源 胖里的日常 标题中直接写lateral view explode是我鲁莽了 毕竟这俩不是法定cp 也并不是不能分开各自生活 其中explode可以放在select从句中单独使用
  • android ScrollView 嵌套RecyclerView 解决滑动冲突

    为了解决滑动事件的冲突需要重写ScrollView Copyright 2014 Soichiro Kashima Licensed under the Apache License Version 2 0 the License you
  • 【Linux

    目录 一 判断文件是否存在 1 1 判断目录是否存在 1 2 判断文件是否存在 1 3 其他文件类型判断 二 字符串截取 去掉文件后缀 2 1 获取文件后缀 2 2 获取文件前缀 在Linux编程过程中 设计到对文件的处理时常常需要判断某个
  • 远程调试运行在Resin上面的Web应用程序

    为什么80 的码农都做不了架构师 gt gt gt 有时候 我们不得不放弃在本地调试我们的程序 把我们的程序先布署到服务器 然后把调试信息都记在日志中 用眼睛瞅日志来调试程序 不是用这种方式不行 只是效率太低 本来写程序是一件开心的事情 却
  • UE4数字孪生项目制作规范

    UE数字孪生项目制作规范 说明 协同 规范 说明 UnrealEngine项目 打包输出Window应用 鼠标操作 键盘快捷键操作 协同 内部开发的可以自己内网搭建svn服务器协同开发 如有外部人员参与项目开发 则项目协同可使用svnbuc
  • Spring Boot:jar中没有主清单属性

    D hu git spring xxx xxx target gt java jar spring cloud eureka 0 0 1 SNAPS HOT jar spring xxx xxx 0 0 1 SNAPSHOT jar中没有主
  • 数据库的背景知识及基本概念

    数据库的背景知识及基本概念 随着互联网技术的高速发展 大量的数据正在不断产生 伴随而来的是如何安全有效的存储 检索 管理他们 使用数据库可以高效且条理分明地存储数据 它使人们能够更加迅速和方便管理数据 主要体现一下几个方面 可以结构化存储大
  • 奥迪A6 C5空调制冷效果差维修

    一台2003年出厂的一汽奥迪A6 C5 2 8L轿车 装备BBG发动机及双区自动空调 行驶约159000公里 该车空调制冷效果差 空调面板设定22度 用手感知出风口温度 凉 但不够凉 压缩机离合器正常吸合 皮带盘正常运行 连接空调歧管压力表
  • 从零读懂CAN总线(上)

    概要 上世纪八十年代以来 汽车ECU越来越多 如ABS 电控门窗 电子燃油喷射装置 如果仍然采用常规的点对点布线方式 即电线一段与开关相接 另一端与用电设备相通 将会导致车上电线数目的急剧增加 从而带来线束的冗余及维修成本的提高 这就对汽车