热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

CAN总线终端电阻的作用?为什么是120Ω?为什么是0.25W?

转载自https:zhuanlan.zhihu.comp456959022部分修改CAN总线终端电阻,一般来说都是120欧姆,实际上在设计的时候,也是两个60欧姆的电阻串起来,而总

转载自https://zhuanlan.zhihu.com/p/456959022 部分修改

CAN 总线终端电阻,一般来说都是 120 欧姆,实际上在设计的时候,也是两个 60 欧姆的电阻串起来,而总线上一般有两个 120Ω的节点,基本上稍微知道点 CAN 总线的人都知道这个道理。

终端电阻的作用

CAN 总线终端电阻的作用有 3 个:

1、提高抗干扰能力,让高频低能量的信号迅速走掉

2、确保总线快速进入隐性状态,让寄生电容的能量更快走掉;

3、提高信号质量,放置在总线的两端,让反射能量降低。


一、提高抗干扰能力

CAN 总线有 “显性” 和“隐性”两种状态,“显性”代表 “0”,“隐性” 代表“1”,由 CAN 收发器决定。下图是一个 CAN 收发器的典型内部结构图,CANH、CANL 连接总线。

总线显性时,收发器内部 Q1、Q2 导通,CANH、CANL 之间产生压差;隐性时,Q1、Q2 截止,CANH、CANL 处于无源状态,压差为 0。

总线若无负载,隐性时差分电阻阻值很大,内部的 MOS 管属于高阻态,外部的干扰只需要极小的能量即可令总线进入显性(一般的收发器显性门限最小电压仅 500mV)。这个时候如果有差模干扰过来,总线上就会有明显的波动,而这些波动没有地方能够吸收掉他们,就会在总线上创造一个显性位出来。所以为提升总线隐性时的抗干扰能力,可以增加一个差分负载电阻,且阻值尽可能小,以杜绝大部分噪声能量的影响。然而,为了避免需要过大的电流总线才能进入显性,阻值也不能过小。


二、确保快速进入隐性状态

在显性状态期间,总线的寄生电容会被充电,而在恢复到隐性状态时,这些电容需要放电。如果 CANH、CANL 之间没有放置任何阻性负载,电容只能通过收发器内部的差分电阻放电,这个阻抗是比较大的,按照 RC 滤波电路的特性,放电时间就会明显比较长。我们在收发器的 CANH、CANL 之间加入一个 220PF 的电容进行模拟试验,位速率为 500kbit/s,波形如图,这个波形的下降沿就是比较长的状态。

为了让总线寄生电容快速放电,确保总线快速进入隐性状态,需要在 CANH、CANL 之间放置一个负载电阻。增加一个 60Ω的电阻后,波形如图,从图中看出,显性恢复到隐性的时间缩减到 128nS,与显性建立时间相当。


三、提高信号质量

信号在较高的转换速率情况下,信号边沿能量遇到阻抗不匹配时,会产生信号反射;传输线缆横截面的几何结构发生变化,线缆的特征阻抗会随之变化,也会造成反射。

能量发生反射时,导致反射的波形与原来的波形进行叠加,就会产生振铃。

在总线线缆的末端,阻抗急剧变化导致信号边沿能量反射,总线信号上会产生振铃,若振铃幅度过大,就会影响通信质量。在线缆末端增加一个与线缆特征阻抗一致的终端电阻,可以将这部分能量吸收,避免振铃的产生。

别人进行了一个模拟试验(图片都是我抄过来的),位速率为 1Mbit/s,收发器 CANH、CANL 接一根 10m 左右的双绞线,收发器端接 120Ω电阻保证隐性转换时间,末端不加负载。末端信号波形如图所示,信号上升沿出现了振铃。

若双绞线末端增加一个 120Ω的电阻,末端信号波形明显改善,振铃消失。

一般在直线型拓扑中,线缆两端即是发送端,也是接收端,故线缆两端需各加一个终端电阻。

而在实际应用过程中,CAN 总线一般都不是完美的总线式的设计,很多时候是总线型和星型的混合结构,这个时候一般都将 CAN 终端电阻布置在线束最远的两端,来尽量的模拟 CAN 总线的标准结构。


为什么选 120Ω?

什么是阻抗?在电学中,常把对电路中电流所起的阻碍作用叫做阻抗。阻抗单位为欧姆,常用 Z 表示,是一个复数 Z= R+i(ωL–1/(ωC))。具体说来阻抗可分为两个部分,电阻(实部)和电抗(虚部)。其中电抗又包括容抗和感抗,由电容引起的电流阻碍称为容抗,由电感引起的电流阻碍称为感抗。这里的阻抗是指 Z 的模。

任何一根线缆的特征阻抗都可以通过实验的方式得出。线缆的一端接方波发生器(这里指的不一定是信号发生器,因为信号发生器的功率很低,且阻抗一般默认50Ω。可以使用门电路,或MCU的IO),另一端接一个可调电阻,并通过示波器观察电阻上的波形。调整电阻阻值的大小,直到电阻上的信号是一个良好的无振铃的方波,此时的电阻值可以认为与线缆的特征阻抗一致。

采用两根汽车使用的典型线缆,将它们扭制成双绞线,就可根据上述方法得到特征阻抗大约为 120Ω,这也是 CAN 标准推荐的终端电阻阻值,所以这个 120Ω是测出来的,不是算出来的,都是根据实际的线束特性进行计算得到的。当然在 ISO 11898-2 这个标准里面也是有定义的。

为什么功率还要选 0.25W?



这个就要结合一些故障状态也计算,汽车 ECU 的所有接口都需要考虑短路到电源和短路到地的情况,所以我们也需要考虑 CAN 总线的节点短路到电源的情况,根据标准需要考虑短路到 18V 的情况,假设 CANH 短路到 18V,电流会通过终端电阻流到 CANL 上,而 CANL 内部由于限流的原因,最大注入电流为 50mA(TJA1145 的规格书上标注),这时候 120Ω电阻的功率就是 50mA50mA120Ω=0.3W。考虑到高温情况下的降额,终端电阻的功率就是 0.5W。转载文章代表原作者观点,侵删 。

懒惰不会让你一下子跌到

但会在不知不觉中减少你的收获;

勤奋也不会让你一夜成功

但会在不知不觉中积累你的成果

越努力,越幸运。



推荐阅读
  • 本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ... [详细]
  • 本文基于对相关论文和开源代码的研究,详细介绍了LOAM(激光雷达里程计与建图)的工作原理,并对其关键技术进行了分析。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了如何像程序员一样思考,强调了将复杂问题分解为更小模块的重要性,并讨论了如何通过妥善管理和复用已有代码来提高编程效率。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了如何使用Maven高效管理多模块项目,涵盖项目结构设计、依赖管理和构建优化等方面。通过具体的实例和配置说明,帮助开发者更好地理解和应用Maven在复杂项目中的优势。 ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍了在安装或运行 Python 项目时遇到的 'ModuleNotFoundError: No module named setuptools_rust' 错误,并提供了解决方案。 ... [详细]
author-avatar
wang静的天空
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有