CAN总线波形中ACK位电平为什么会偏高?
摘要:如果CAN总线中有多个节点,在某一点测试CAN总线的波形(CANH和CANL之间)时,会发现在一帧数据的末尾ACK位的差分电平会偏高。网上有关于此问题的一些描述和解释,但孔丙火(微信公众号:孔丙火)认为欠妥,因此对这个问题重新分析,得出结论:凡是正确接收到数据的节点都会回复ACK位(显性电平),用示波器测试,展现出来的应该是驱动能力最强(电平最高)的节点的电平,因此,如果发送节点距离测试点较远,其测试出来的电平会相对较低,ACK位相对较高,就会形成ACK位差分电平偏高的现象。
如果CAN总线中有多个节点,在某一点测试CAN总线的波形(CANH和CANL之间)时,会发现在一帧数据的末尾ACK位的差分电平会偏高。如图1中红色圆圈的位置。为了搞清楚这个问题,我在百度上搜索了一下,有几篇相关的文章,基本上都出自一人之手,如图2所示。
图1
图2
这篇文章的主要意思集中在图3所示的一段话。孔丙火(微信公众号:孔丙火)认为,这种逻辑不妥,终端电阻连接在多个通信节点的回路中时,每个节点的电流变化是不好分析的,但终端电阻上流过的电流变化是确定的,多个终端电阻上的电流取决于差分电压最大的那个节点,确切的说是,在终端电阻两侧差分电压最大的节点(因为有导线的存在,导线上有压降,距离长的话压降不容忽视)。如果发送节点的差分电压小于这个最大电压,那么在波形上呈现出的就是ACK位偏高。
图3
还有一个问题需要注意,只有多个节点通信时会出现这种情况,两个节点通信时,一个节点发送,一个节点回复ACK,这个位的电平有可能升高,也有可能降低,这取决于测量点在什么地方。
文章在微信公众号同步推出,微信公众号:孔丙火,关注欣赏更多文章。
CAN总线波形中ACK位电平为什么会偏高?的更多相关文章
- 在Modelsim波形中查看值
在Modelsim的波形中查看值时,可以利用右键选择变量的数据类型.如果变量值为0,可以选择unsigned类型观察,可以1位显示0. 长度较大的数据以十六进制显示时,即使值为0,也依然显示为长度较长 ...
- js中的位运算
按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是"位": 数值或字符在内存内都是被存储为0和 1的序列,每个0和1被称之为1个位,比如说10 ...
- C语言中两位ASCII码可以表示汉字
最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ******************************************************** ...
- PHP中的位运算与位移运算(其它语言通用)
/* PHP中的位运算与位移运算 ======================= 二进制Binary:0,1 逢二进1,易于电子信号的传输 原码.反码.补码 二进制最高位是符号位:0为正数,1为负数( ...
- 【转载】C++中的位拷贝和值拷贝
---恢复内容开始--- 原文:C++中的位拷贝和值拷贝 原文:http://blog.csdn.net/liam1122/article/details/1966617 为了便于说明我们以Strin ...
- C++中的位运算总结
1)位运算 位运算是指对转换成二进制的数字进行每一位上的0.1的运算,运算涉及到五种运算:与(&),或(|),异或(^),左移(<<),右移(>>). 如下表所示: ...
- STM32中的位带(bit-band)操作(转)
源:STM32中的位带(bit-band)操作 支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写.在 CM3 中,有两个区中实现了位带.其中一个是 SRAM 区的最低 1MB 范围 ...
- C语言中的位运算和逻辑运算
这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非( ...
- [翻译] Linux 内核中的位数组和位操作
目录 Linux 内核里的数据结构 原文链接与说明 Linux 内核中的位数组和位操作 位数组声明 体系结构特定的位操作 通用位操作 链接 Linux 内核里的数据结构 原文链接与说明 https:/ ...
随机推荐
- HashMap集合特点
>HashMap集合特点 HashMap:是基于哈希表的Map接口实现. 哈希表的作用是用来保证键的唯一性的. 不明白,直接看HashMap的put方法源码 //HashM ...
- PHP SFTP应用(二)
SFTP应用(二) SFTP Server SSH2 sftp操作 FTP进行文件传输需要通过端口进行.一般所需端口为: 控制链路—TCP端口21.控制器端.用于发送指令给服务器以及等待服务器响应. ...
- 词组查询以及多值映射等SolrNet使用中的细节问题
转自:http://www.duxuan.cn/doc/6896594.html
- 【C#】#101 导入导出Excel
项目需求: 1.把数据导出到Excel: 2.把Excel数据导入到数据库 使用的类库: Aspose.Cells ExcelHelper.zip下载 一.导出[调用已经封装好的方法][未 ...
- multi_index_container
转自:https://blog.csdn.net/buptman1/article/details/38657807 multi_index_container: Boost Multi-index ...
- [SHOI2008]小约翰的游戏
题目 不会,抄论文 这是一个非常牛逼的东西,叫做\(anti\)博弈,就是进行最后一次操作的人输 我们考虑一下这道题 显然如果石子个数都是\(1\),那么有奇数堆石子先手必败,有偶数堆石子先手必胜 如 ...
- Windows下docker的安装,将ASP.NET Core程序部署在Linux和Docker中
参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html docker for windows下载连接: htt ...
- 包学会之浅入浅出Vue.js:结业篇
在第一篇<包学会之浅入浅出Vue.js:开学篇>和上一篇<包学会之浅入浅出Vue.js:升学篇>的学习中,我们首先了解了Vue环境的搭建以及两个重要思想——路由和组件的学习,通 ...
- Php5.6.31连接sqlserver 2008R2数据库问题sqlsrv(php5.3及以上版本)与mssql(php5.3以前版本)②
Php5.6.31连接sqlserver 2008R2数据库 1.环境配置 Win7(win8.1) 64 +Apache2.4 + PHP5.6.31 + SQL Server 2008 R2数据 ...
- typename在C++中的用法
. //在C++中typename一般用来声明模板的模板参数(template parameter): template<typename T> class X; //T是一个模板参数 . ...