“总线仲裁”——以CAN总线为例

news2024/11/17 17:52:03

总线仲裁

  • 1.什么是总线仲裁
  • 2.为什么要总线仲裁
  • 3.怎么进行总线仲裁(总线仲裁机制)
    • 3.1 如何确定冲突
      • 3.1.1 确定冲突前提
      • 3.1.2 同时冲突
      • 3.1.3 延时冲突
    • 3.2 冲裁逻辑
      • 3.2.1 避免延时冲突
      • 3.2.1 避免同时冲突

1.什么是总线仲裁

提到总线仲裁的概念,这明显是由两个次合起来产生的一个新词,理解这种词汇我通常就是分开把各自单独的意思理解清楚了,那么合起来的意思也就能大概理解的差不多了。因此我们要把总线仲裁分成“总线”和“仲裁”2个单独的概念来进行理解。
我们首先来说一下什么是总线,通俗意义上来说总线就是在一根通讯传输线上挂载了很多个设备。
由于这些设备共用一根总线,总线上在某一一时刻只允许一个设备进行数据的传输,而总线上挂载的这些设备通常情况下数据发送是随机的。难免不了会有某个时刻有两个设备同时发送数据,这个时候就要引入到仲裁,什么叫仲裁呢?仲裁其实就是判断,也就是说,要决定哪个设备优先发送数据。
这个场景和我们上课那个场景是非常类似的,当老师提出一个问题之后,很多学生举手回答,但是呢,又只允许一个学生回答问题,这时候老师就要承担仲裁的角色,来决定哪个学生回答问题。

2.为什么要总线仲裁

就是要解决总线上两个设备或者多个设备同时发送数据的一个冲突问题,保证这个数据传输的正确性。

3.怎么进行总线仲裁(总线仲裁机制)

同样拿我们刚刚举得例子来进行说明,在课堂上,老师承担了仲裁的角色,那么老师是怎么进行仲裁的呢?也就是说,老师确定这个让这个学生先回答问题的判断标准是什么?有可能是这个学生很优秀,老师比较喜欢,也有可能是这个学生,让老师看到了他眼神中想回答问题的渴望,总而言之呢,就是给了老师一个理由,让这个学生站起来回答问题。
现在的场景是,承担仲裁的角色不再是老师,而是一个叫仲裁控制器的设备,这个设备还好,理解重要的是这个设备,进行仲裁的时候的判断依据是什么?因为我们要让设备自动地完成一个判断,所以说他必须要搞清楚判断依据,也就是说仲裁的机制是什么?
现在请你停下来,自己思考一下,如果是你,你会怎么样?让一个设备去,实现仲裁的逻辑或者说更深入一点,你的这个仲裁逻辑是什么?

3.1 如何确定冲突

那么我们来解决第一个问题,首当其冲的问题是,我怎么知道发生冲突了,就向老师提出来一个问题,那么在老师要判断让哪个学生回答问题之前肯定是有多个学生要回答问题,这个是老师用眼睛看到的,眼睛看到发生冲突了,然后再去执行仲裁逻辑
很明显,如果只有一个学生举手,那我也不需要判断了,只需要让他回答就好了,所以说我们首先要考虑的一个问题是怎么让设备或者说怎么样让机器判断矛盾产生了。然后我们再去想怎么让机器去仲裁。

3.1.1 确定冲突前提

可以基本确定的是,设备是通过检测总线上的逻辑电平来进行冲突检测的,那么这里面有一个隐含的前提就是,在任何情况下,总线上的电瓶都是,逻辑清晰的,也就是说,即使发生了冲突,那么设备也可以明显的检测到总线上的电平是高电平还是低电平,
如果说,同时进行数据发送的两个设备,导致总线上的电瓶逻辑不能被设备准确判断那么,是没办法检测冲突的。
我们以can总线为例,Can总线的通过设置额can h和can l,两根传输线的方式呢,并且在物理层定义了,显性电平和隐性电平,这种方式可以让,总线的电瓶时时刻刻能被设备确切的检测,及时显性电瓶和银杏电瓶,同时发送,到总线上,那么,can总线依然会保持一个显性电平。

大前提满足之后,我们再来探讨冲突发生的时刻, 我在这里根据发冲突发生的时刻分成了两种情况首先是同时产生冲突,这里就是严格意义上的同一时刻产生冲突,是一种比较理想的极限的情况,另外一种是设备a正在往总线上发送数据,但是还没有发完这个时候,设备b盐往走,线上发数据产生的冲突,即他们不是在同一时刻往总线上发数据,产生了冲突。

3.1.2 同时冲突

在这里插入图片描述

3.1.3 延时冲突

在这里插入图片描述

3.2 冲裁逻辑

CAN总线用了一种机制来避免上述提到的两种冲突的出现。

3.2.1 避免延时冲突

对于can总线而言,处理延时冲突比较简单,Can总线用一个起始位来避免延时冲突,当总线空闲的时候,总线电平为隐性,总线上的某个设备要发送数据的时候,会首先发送一个起始位,这个起始位是显性,其实,为了显性信号会被所有总线上所有设备检测到,检测到之后还没有发送数据的设备停止发送数据直到当前占用总线的设备数据发送完毕,也就是说,通过起始位解决延时冲突,也就是说,上图中a设备先发送起始信号占用总线,B设备监测到起始信号后,认为总线忙碌不会在a设备发送完数据之前发送数据。

3.2.1 避免同时冲突

以上图为例,两个设备同时,往总线上发送数据,在某一时刻,设备A发送隐形电瓶设备b发送的是显性电平,由于CAN总线隐性电瓶会被显现,电瓶覆盖掉的特性,这时候总线电瓶为显性电瓶,看设备在数据发送的同时也进行总线电瓶的监听,由于此时总线电平为显性电平,设备设备a监听到的电瓶与发送的电瓶不相同设备a放器总线控制进行监听不再往总线上发送数据,这就完成了一次设备a和设备b的总线仲裁。

熟悉can总线的人已经清楚了,起始位后面跟的这一系列的隐形隐形电瓶组合,其实就是can总线中的设备ID,那么,总线仲裁过后,哪个设备先发送,哪个设备后发送是可以根据ID来确定的也就是说,不同的ID有不同的优先级。

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

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

相关文章

基于Qt 多线程(继承自QThread篇)

# 简介 我们写的一个应用程序,应用程序跑起来后一般情况下只有一个线程,但是可能也有特殊情况。比如我们前面章节写的例程都跑起来后只有一个线程,就是程序的主线程。线程内的操作都是顺序执行的。恩,顺序执行?试着想一下,我们的程序顺序执行,假设我们的用户界面点击有某…

leetcode-链表经典题

1.反转单链表 206. 反转链表https://leetcode.cn/problems/reverse-linked-list/这里我们使用创建一个变量cur来遍历原链表,再创建一个新节点newnode,首先使用一个循环来遍历原链表,cur为NULL是循环结束,每次进入循环将cur的下一…

nRF5 SDK 入门(三、理解 nRF5 SDK 应用与协议栈分开烧录)

说明一下 Nordic nRF5 SDK 软件 应用程序 和 协议栈分开烧录的理解前言 上一篇文章我们了解了 Nordic nRF5 SDK 目录结构,在那之前我们也已经搭建好了开发环境,实际上我们就已经可以进入我们的开发之旅了,但是如果刚接触 Nordic 蓝牙开发的小…

DeCLIP 论文阅读

DeCLIP:supervision exists everywhere:a data efficient contrastive language-image pre-training paradigm 贡献: 论文是为了充分利用单模态和多模态,充分利用单模态特征用自监督(SIMSAM和MLM),多模态用图像文本对…

Vue简单使用Echart图表柱形图 vue使用柱形图 vue使用 echart图表柱形图 vue使用柱形图

Vue简单使用Echart图表柱形图 vue使用柱形图 vue使用 echart图表柱形图 vue使用柱形图 1、安装依赖2、页面Demo使用3、效果图 1、安装依赖 官方文档:https://echarts.apache.org/zh/option.html#title 官方在线示例:https://echarts.apache.org/exampl…

windows系统winget一键安装和使用

winget命令概述 用户可以在 Windows 10 和 Windows 11 计算机上使用 winget 命令行工具来发现、安装、升级、删除和配置应用程序。 此工具是 Windows 程序包管理器服务的客户端接口 在 Windows 沙盒上安装 winget Windows 沙盒提供了一个轻型桌面环境,可以安全地独…

使用python电脑轻量级控制手机—adb命令和手机投屏

文章目录 一、通过无线连接手机和电脑二、使用adb命令轻量级控制手机二、使用scrcpy控制手机 通过电脑控制手机有多种方式如appnium等,本文介绍的是两种轻量级的方案,使用adb命令刚和手机投屏。 一、通过无线连接手机和电脑 1、手机设置 开发者选项—us…

AD教程 (十三)常见CHIP封装的创建

AD教程 (十三)常见CHIP(贴片)封装的创建 PCB封装是电子设计图纸和实物之间的映射体,具有精准数据的要求,在实际设计中需要通过规格书获取创建封装的数据参数。 PCB封装和实物的大小一致。PCB封装是承载实物…

linux_day03

1、复习 遇到虚拟机异常退出,会生成配置文件,不确定文件以后是不是还要用的情况下,先改文件名,再启动虚拟机; 2、磁盘相关命令: df(disk full):查看磁盘整体状况 -h &…

【JAVA学习笔记】69 - 多用户通信系统

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/QQClient https://github.com/yinhai1114/Java_Learning_Code/tree/main/QQServer 〇、环境设置以及前言 该项目内会弱化UI界面的设计,因为JAVA本质不是用来开发界面的。 项目开发流程 对于…

Windows桌面黑屏无法打开软件窗口不显示卡死等解决方案

问题还原 该软件窗口无论如何操作均 无法打开显示的窗口 ,但是 可使用 ALTTab 看到任务视图 目录 问题还原 解决方案 1. 使用 WinR 打开命令窗口 盲输 cmd 2. 盲输 taskkill /f /im explorer.exe 关闭资源管理器 3. 输入 start explorer.exe 启动任务管理器即可恢复正常…

摊牌 了,我不藏了,上线了一年多的网站还是广而告之吧!

大家好,我是大明哥,一个专注「死磕 Java」系列文章创作的程序员。 本文已收录到我的小站:https://skjava.com。 从去年开始一直有小伙伴问我,大明哥,你的网站怎么打不开了?我只能苦涩地跟他说,没…

仿写知乎日报第四周

本周主要修改了以往的一些bug,实现了一些遗漏的新功能。 无限右滑 无限右滑我听了学长的思路,首先在scrollView的画布大小设置多一个宽度的画布,然后每当滑到那个画布的时候,就调用一个通知,该通知会触发在首页的vie…

第一百七十回 Material3中的IconButton

文章目录 1. 概念介绍2. 使用方法2.1 filled风格2.2 filledTonal风格2.3 outlined风格 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"如何修改NavigationBar组件的形状"相关的内容,本章回中将 介绍IconButtion组件.闲话休…

深入理解JVM虚拟机第二十四篇:详解JVM当中的动态链接和常量池的作用

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…

Mybatis-Plus入门

Mybatis-Plus入门 MyBatis-Plus 官网:https://mp.baomidou.com/ 1、简介 MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、 提高效率而生。 https://github.com/baomidou/mybatis-p…

优秀智慧园区案例 - 中建科技产业园(中建·光谷之星),万字长文解析先进智慧园区建设方案经验

一、项目背景 中建科技产业园(中建光谷之星),位于武汉光谷中心城、中国(湖北)自贸试验区武汉片区双核心区,光谷发展主轴高新大道北侧,建筑面积108万平米,是中建三局“中建之星”和“…

物联网AI MicroPython学习之语法 network网络配置模块

学物联网,来万物简单IoT物联网!! network介绍 模块功能: 用于管理Wi-Fi和以太网的网络模块参考用法: import network import time nic network.WLAN(network.STA_IF) nic.active(True) if not nic.isconnected():…

WebSocket网络协议

二十六、WebSocket 26.1 介绍 WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。 HHTP协议和WebSocket协议对比&#xff…

选购护眼台灯,全网都没有说清一个关键点!——照度均匀度

网上关于护眼台灯的选购推荐帖子多如牛毛,好台灯选购要点大体可归纳为以下五点: RG0无蓝光危害(豁免级蓝光危害,RG1为低蓝光危害、RG2、RG3分别为中度和高危危害) 无眩光,无可视频闪(不刺眼…