摘要:如果CAN总线中有多个节点,在某一点测试CAN总线的波形(CANH和CANL之间)时,会发现在一帧数据的末尾ACK位的差分电平会偏高。网上有关于此问题的一些描述和解释,但孔丙火(微信公众号:孔丙火)认为欠妥,因此对这个问题重新分析,得出结论:凡是正确接收到数据的节点都会回复ACK位(显性电平),用示波器测试,展现出来的应该是驱动能力最强(电平最高)的节点的电平,因此,如果发送节点距离测试点较远,其测试出来的电平会相对较低,ACK位相对较高,就会形成ACK位差分电平偏高的现象。

如果CAN总线中有多个节点,在某一点测试CAN总线的波形(CANH和CANL之间)时,会发现在一帧数据的末尾ACK位的差分电平会偏高。如图1中红色圆圈的位置。为了搞清楚这个问题,我在百度上搜索了一下,有几篇相关的文章,基本上都出自一人之手,如图2所示。

图1

图2

这篇文章的主要意思集中在图3所示的一段话。孔丙火(微信公众号:孔丙火)认为,这种逻辑不妥,终端电阻连接在多个通信节点的回路中时,每个节点的电流变化是不好分析的,但终端电阻上流过的电流变化是确定的,多个终端电阻上的电流取决于差分电压最大的那个节点,确切的说是,在终端电阻两侧差分电压最大的节点(因为有导线的存在,导线上有压降,距离长的话压降不容忽视)。如果发送节点的差分电压小于这个最大电压,那么在波形上呈现出的就是ACK位偏高。

图3

还有一个问题需要注意,只有多个节点通信时会出现这种情况,两个节点通信时,一个节点发送,一个节点回复ACK,这个位的电平有可能升高,也有可能降低,这取决于测量点在什么地方。

文章在微信公众号同步推出,微信公众号:孔丙火,关注欣赏更多文章。

CAN总线波形中ACK位电平为什么会偏高?的更多相关文章

  1. 在Modelsim波形中查看值

    在Modelsim的波形中查看值时,可以利用右键选择变量的数据类型.如果变量值为0,可以选择unsigned类型观察,可以1位显示0. 长度较大的数据以十六进制显示时,即使值为0,也依然显示为长度较长 ...

  2. js中的位运算

    按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是"位": 数值或字符在内存内都是被存储为0和 1的序列,每个0和1被称之为1个位,比如说10 ...

  3. C语言中两位ASCII码可以表示汉字

    最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ******************************************************** ...

  4. PHP中的位运算与位移运算(其它语言通用)

    /* PHP中的位运算与位移运算 ======================= 二进制Binary:0,1 逢二进1,易于电子信号的传输 原码.反码.补码 二进制最高位是符号位:0为正数,1为负数( ...

  5. 【转载】C++中的位拷贝和值拷贝

    ---恢复内容开始--- 原文:C++中的位拷贝和值拷贝 原文:http://blog.csdn.net/liam1122/article/details/1966617 为了便于说明我们以Strin ...

  6. C++中的位运算总结

    1)位运算 位运算是指对转换成二进制的数字进行每一位上的0.1的运算,运算涉及到五种运算:与(&),或(|),异或(^),左移(<<),右移(>>). 如下表所示:   ...

  7. STM32中的位带(bit-band)操作(转)

    源:STM32中的位带(bit-band)操作 支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写.在 CM3 中,有两个区中实现了位带.其中一个是 SRAM 区的最低 1MB 范围 ...

  8. C语言中的位运算和逻辑运算

    这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非( ...

  9. [翻译] Linux 内核中的位数组和位操作

    目录 Linux 内核里的数据结构 原文链接与说明 Linux 内核中的位数组和位操作 位数组声明 体系结构特定的位操作 通用位操作 链接 Linux 内核里的数据结构 原文链接与说明 https:/ ...

随机推荐

  1. php常用算法和数据结构

    </pre><pre name="code" class="php"><?php /** * Created by PhpStor ...

  2. September 17th 2017 Week 38th Sunday

    Distance could make you forget about them, but the memories would always be there. 距离会让你遗忘,但是回忆却始终在那 ...

  3. python -wordcloudan云词安装

    1安装网站:https://download.lfd.uci.edu/pythonlibs/u2yrk7ps/wordcloud-1.4.1-cp36-cp36m-win_amd64.whl 2安装过 ...

  4. Paxos算法简单陈述

    上文二段式和三段式提交协议是相对比较容易理解的.1990年Leslie Lamport 提出的Paxos算法是一种基于消息传递且具有高度容错特性的一致性算法.但是Paxos算法比较复杂,对于不能沉心学 ...

  5. 打造自己的移动绿色版 Python 环境

    本文只适用 Windows 系统,Linux,Mac 或其他系统可以直接自己写个脚本安装就好了,甚至大部分系统自带. 相信某些人写好了Python程序结果给朋友运行又得装个Python环境,难免失去了 ...

  6. linux下10款markdown软件

    原文:https://linux.cn/article-7623-1.html 在这篇文章中,我们会点评一些可以在 Linux 上安装使用的最好的 Markdown 编辑器. 你可以在 Linux 平 ...

  7. 一个简单的统计问题(解决方案:Trie树)

    题目如图   输入几个不重复的单词和几个前缀,分别统计出单词中包含前缀的个数. Trie树   这个题目用到了 Trie 树.它在百度百科中的定义如下:在计算机科学中,Trie,又称字典树.单词查找树 ...

  8. HashMap实现原理及源码分析之JDK7

    攻克集合第一关!! 转载 http://www.cnblogs.com/chengxiao/ 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如m ...

  9. C#动态加载/卸载Assembly的解决方案

    1.  Assembly中的类要从MarshalByRefObject继承,如果你想从你自己的类来继承,那么请选用interface或者继续研究其他解决方案. namespace Library { ...

  10. DRCNN超分辨重建2016年

    论文疑点: Embedding层是怎么操作的? https://gshtime.github.io/2018/06/01/tensorflow-embedding-lookup-sparse/ 这篇文 ...