当前位置: 首页 > news >正文

CAN总线仲裁机制

文章目录

  • 1、什么是CAN总线仲裁?
  • 2、仲裁机制
  • 3、仲裁过程


1、什么是CAN总线仲裁?

CAN总线上的每个节点都能监测到总线上发送的数据,当总线空闲时每个节点都能够进行报文发送,多个节点同时发送报文时,最终由哪个节点来进行发送是仲裁机制的来源。

2、仲裁机制

CAN总线采用的是非破坏性仲裁机制,具体来说就是:当节点B发送(Tx)的隐性电平1,回读/接收(Rx)的却是显性电平0,故节点B就知道仲裁失败了,从而转为接收状态。

3、仲裁过程

仲裁发生在报文的仲裁段Identifier。ID值越小,优先级越高
在这里插入图片描述
如下图,在CAN网段上的节点123进行报文发送时,在仲裁段进行总线仲裁:

  • 第一个位都是0,没有抉择出优先级高的报文,三个节点都继续发送;
  • 第二个位节点3是1,其他两个节点是0,节点3退出发送,转为接收,节点1、2继续发送;
  • 第三个位节点2是1,节点1是0,节点2退出发送,转为接收,节点1继续发送。

在这里插入图片描述
最终,经过总线仲裁节点1获得总线占用,进行报文发送。而节点2、3仲裁失败进入“只听”模式,在检测到总线空闲的第一时间再次尝试发送,继续进行总线仲裁。

风险在于网络负载率很高、消息报文很多时,低优先级的消息可能会延迟很久才发送成功。


http://www.mrgr.cn/news/48030.html

相关文章:

  • 【AI大模型】北京银行如何构建全栈大模型应用体系?
  • 无图化加速!MemFusionMap提出时序重叠热图策略,在线建图mAP暴涨5.4%!
  • 会话好友区设计与开发(五)
  • 深圳有哪些神仙公司?
  • C++ 基于SDL库的 Visual Studio 2022 环境配置
  • 拿下奇怪的前端报错:1比特丢失导致的音视频播放时长无限增长-浅析http分片传输核心和一个坑点
  • Python编程(基础)
  • 不推荐在freertos中使用HAL_Delay() 函数
  • onnx底层入门
  • 你知道C++多少——模版进阶
  • 金九银十软件测试面试题(800道)
  • yarn install 报错 Expected version “>=18“,Got “16.20.0“
  • 数据库设计与查询分析(练习--对小白友好)
  • 【Java 22 | 2】 深入解析Java 22 :原生支持的记录类型
  • C++11 简单手撕多线程编程
  • 一个比较复杂的makefile工程例子
  • this,this指向
  • 在Stable Diffusion WebUI中安装SadTalker插件时几种错误提示的处理方法
  • 直流有刷电机驱动芯片:【TOSHIBA:TB6612】
  • Linux基础命令groupmod详解