CAN帧中的ACK位

1:先看官方文档对ACK的解释

All nodes that have received the matching CRC sequence (and, in FD Frames the matching stuff count) shall send an ACK within the ACK slot by overwriting the recessive bit of the transmitter by a dominant bit (they send ACK).

所有接收到匹配CRC序列的节点(以及在FD帧中的匹配填充计数)应通过用显性比特覆盖发射机的隐性比特来在ACK时隙内发送ACK(它们发送ACK)。

也就是说ACK是作用于底层的(实际作用于数据链路层)。它对自己能接受到的所有正确帧数据,都要发送ACK应答。

此处“正确”的解释是:指帧结构,CRC校验,不存在问题。假设总线上存在一个节点Node1、它不发送数据,其他节点发送所有正确的帧,Node1都要发送ACK。

2:实验验证我们的结论

1:打开一个CANoe工程,配置好波特率,采样点等参数。连接任意CAN总线(总线上至少存在一个实物节点(Node))使用IG工具,发送以下报文

且这些报文都是该实物节点的DBC文件中没有定义的。也就是说总线上的实物节点,并不会处理这些帧数据。

查看结果:

以上结果证明了我们的猜想。

我们在将真实节点去除,看实验结果

可以看到,总线将报ACK应答错误。

结论如下:总线上的节点将会,总线上所有能接收到的正常帧都进行ACK应答

3:常见的误解

写下这段文字的目的在于,我以前对ACK位,存在误解。我以前认为节点只对其需要接收的帧,才进行ACK应答,实际并非如此。实际情况是ACK只作为底层(实际数据链路层的一种校验方式)。

实际上ACK是来者不拒,对所有正确的帧都进行应答。

而关于节点对那些帧接收,并处理其中的数据,则是更高级别的层来处理的。

4:对于ACK应答的深入思考

**1)如果总线上存在多个节点(假设3个,节点A/B/C),那么节点A发送帧(正确的帧)数据,其余两个节点,B给与ACK应答,C不进行ACK应答。节点A该怎么处理和观察?

答:解决方案:两个接收节点,B和C会对ACK进行回读。

1:B进行ACK应答,回读与发出一致,没有问题。

2:C不进行ACK应答,回读与发出不一致,发现错误(此处也很好理解,不应答就发出隐形电平,但是B发出显性电平,直接将C发出的电平覆盖)

3:发出此帧的节点A,检查发现ACK被应答,没有错误,很开心。

此时将会由节点C发出错误帧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求圆、圆球和圆柱的面积和体积(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> //定义π常量的值&#xff1b; # define π 3.141526int main() {//初始化变量值&#xff1b;float r, h, S1, S2, P1, V1, V2;int judge 0;//提示用户&#x…

Python基于flask的豆瓣电影分析可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

第一天练习

一.在系统中设定延迟任务要求如下 在系统中建立easylee用户&#xff0c;设定其密码为easylee [rootxixi /]# useradd easylee [rootxixi /]# passwd easylee Changing password for user easylee. New password:easylee BAD PASSWORD: The password is shorter than 8 charac…

python 实现方差检验

前面介绍的 z z z检验和 t t t检验主要用于对总体的均值进行假设检验&#xff0c;下面主要介绍对总体方差进行假设检验的方法。 一. 单个总体方差检验 设总体 X ∼ N ( μ , δ 2 ) X\sim N(\mu, \delta^2) X∼N(μ,δ2)&#xff0c; μ , δ 2 \mu,\delta^2 μ,δ2均未知&am…

mid_360建图和定位

录制数据 roslaunch livox_ros_driver2 msg_MID360.launch使用fast-lio 建图 https://github.com/hku-mars/FAST_LIO.git 建图效果 使用python做显示 https://gitee.com/linjiey11/mid360/blob/master/show_pcd.py 使用 point_lio建图 https://github.com/hku-mars/Point…

【数据结构】【C++】AVL树的模拟实现(插入、判断、旋转)

文章目录 1 概念2 实现2.1 AVL树结点的定义2.2 AVL树的插入2.2.1 AVL树的插入规则2.2.2 旋转2.2.2.1 左单旋2.2.2.2 右单旋2.2.2.3 左右双旋2.2.2.4 右左双旋 2.2.3 总结 3 平衡判断4 删除5 源码 1 概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二…

找不到api-ms-win-crt-runtime-l1-1-0.dll文件5种解决方法

在日常使用计算机的过程中&#xff0c;我们时常会遭遇各类意想不到的问题&#xff0c;其中之一就是“api-ms-win-crt-runtime-l1-1-0.dll丢失”。这个错误通常发生在Windows操作系统中&#xff0c;它表示一个动态链接库文件丢失或损坏。这个问题可能会导致某些应用程序无法正常…

【LeetCode热题100】【矩阵】搜索二维矩阵 II

题目链接&#xff1a;240. 搜索二维矩阵 II - 力扣&#xff08;LeetCode&#xff09; 从右上角开始搜索&#xff0c;如果当前元素比目标小&#xff0c;那么说明目标只能存在下面矩阵&#xff0c;搜索范围往下压扁&#xff0c;如果当前元素比目标大&#xff0c;说明目标只能存在…

Linux命令、代码【无标题】

$ tar zxf file.tar.gz linux tar 解压缩相关 解压.gz文件&#xff1a; tar zxf save.tar.gz其中&#xff0c;“z”表示使用 gzip 解压缩&#xff0c;“x”表示解包.gz解压命令 linux&#xff0c;“f”表示指定要解包的文件名。 tar –xvf file.tar # 在当前目录解压 tar包 t…

1Panel官方出品丨MaxKB:基于LLM大模型的知识库问答系统

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…

TensorFlow 1.x的学习

.为什么还有很多人都选择使用TensorFlow 1.x 兼容性问题: TensorFlow 1.x在一些旧项目中已经得到了广泛应用&#xff0c;这些项目可能依赖于1.x版本的特定API或行为。升级到2.x可能需要大量的代码修改和测试工作&#xff0c;对于一些已经稳定运行的项目&#xff0c;维护者可能…

实现iOS App代码混淆

简介 在开发iOS应用程序时&#xff0c;保护代码安全是至关重要的。代码混淆是一种常用的技术&#xff0c;可以增加逆向工程的难度&#xff0c;防止他人对代码的篡改和盗用。本文将介绍如何实现iOS App代码混淆的步骤和操作方法。 整体流程 下面是实现iOS App代码混淆的整体流…

创维:在博鳌论坛 叩响世界之门

出走半生&#xff0c;归来仍是少年。 2024年4月8日&#xff0c;一个离开海南近半个世纪的“少年”回到琼海博鳌&#xff0c;“下一站&#xff0c;1000亿&#xff01;”&#xff0c;他的承诺掷地有声。“1000亿”&#xff0c;意指创维集团在2025年前冲击千亿营收&#xff0c;这…

【JavaWeb】Day45.Mybatis——入门程序

什么是MyBatis? MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC的开发。 &#xff08;持久层&#xff1a;指的是就是数据访问层(dao)&#xff0c;是用来操作数据库的。&#xff09; &#xff08;框架&#xff1a;是一个半成品软件&#xff0c;是一套可重用的、通用…

如何定义系统无故障运行维度的能力(高可用、高可靠、高稳定、高容错),及对应衡量指标

1、哪些概念能定义系统无故障运行维度的能力 高可用性、高可靠性、高稳定性和高容错性 这 4 个概念经常用于定义系统无故障运行维度的能力。 它们之间存在区别。具体如下&#xff1a; 高可用性&#xff1a;指的是系统或服务能够保持长时间运行&#xff0c;即使遇到故障也能迅…

vue2动画

vue2动画 在Vue.js 2中&#xff0c;动画和过渡是通过<transition>和<transition-group>组件来实现的 <transition> 组件 <transition> 组件包裹单个元素或组件&#xff0c;并在它们渲染、更新或从DOM中移除时触发过渡效果。这个组件不会渲染为任何额…

【企业动态】瑞芯微高级业务总监来访东胜物联,共探新能源汽车市场合作

近日&#xff0c;瑞芯微高级业务总监阙金珍一行来访东胜物联参观交流&#xff0c;并就深化合作进行讨论。 东胜物联与瑞芯微建有长期稳固的合作关系&#xff0c;基于RK3588、RK3399、RK3568等处理器&#xff0c;推出了多款嵌入式核心硬件产品&#xff0c;包括核心板、网关等&a…

添加usb function <一>

1、usb描述信息 struct usb_interface_descriptor {__u8 bLength;__u8 bDescriptorType;__u8 bInterfaceNumber;__u8 bAlternateSetting;__u8 bNumEndpoints;__u8 bInterfaceClass;__u8 bInterfaceSubClass;__u8 bInterfaceProtocol;__u8 iInterface; }/* 接口描述信…

工业物联网网关

在数字化浪潮席卷全球的今天&#xff0c;工业物联网&#xff08;IIoT&#xff09;作为连接物理世界与数字世界的桥梁&#xff0c;正在逐渐改变传统工业的面貌。而作为IIoT的核心枢纽&#xff0c;工业物联网网关发挥着至关重要的作用。今天&#xff0c;我们就来深入了解一下工业…

使用webpack5+TypeScript+npm发布组件库

一、前言 作为一只前端攻城狮&#xff0c;没有一个属于自己的组件库&#xff0c;那岂不是狮子没有了牙齿&#xff0c;士兵没有了武器&#xff0c;姑娘没有了大宝SOD蜜&#xff0c;你没有了我.... 言归正传&#xff0c;下面将给大家介绍如何通过webpack5编译一个TS组件发布到NPM…