CAN总线仲裁(四)

多设备同时发送遇到的问题

CAN总线只有一对差分信号线,同一时间只能有一个设备操作总线发送数据,若多个设备同时有发送需求,该如何分配总线资源?

解决问题的思路:制定资源分配规则,依次满足多个设备的发送需求,确保同一时间只有一个设备操作总线
​​
在这里插入图片描述

资源分配规则1 - 先占先得

  • 若当前已经有设备正在操作总线发送数据帧/遥控帧,则其他任何设备不能再同时发送数据帧/遥控帧(可以发送错误帧/过载帧破坏当前数据)

  • 任何设备检测到连续11个隐性电平,即认为总线空闲,只有在总线空闲时,设备才能发送数据帧/遥控帧

  • 一旦有设备正在发送数据帧/遥控帧,总线就会变为活跃状态,必然不会出现连续11个隐性电平,其他设备自然也不会破坏当前发送

  • 若总线活跃状态其他设备有发送需求,则需要等待总线变为空闲,才能执行发送需求

资源分配规则2 - 非破坏性仲裁

  • 若多个设备的发送需求同时到来或因等待而同时到来,则CAN总线协议会根据ID号(仲裁段)进行非破坏性仲裁,ID号小的(优先级高)取到总线控制权,ID号大的(优先级低)仲裁失利后将转入接收状态,等待下一次总线空闲时再尝试发送

实现非破坏性仲裁需要两个要求:

线与特性:总线上任何一个设备发送显性电平0时,总线就会呈现显性电平0状态,只有当所有设备都发送隐性电平1时,总线才呈现隐性电平1状态,即:0 & X & X = 0,1 & 1 & 1 = 1

回读机制:每个设备发出一个数据位后,都会读回总线当前的电平状态,以确认自己发出的电平是否被真实的发送出去了,根据线与特性,发出0读回必然是0,发出1读回不一定是1

回读的意思就是,某个设备作为发送方发出一个数据位后,某个设备作为发送方发出一个数据位后,发送方自己,它也会接收这个数据位,确认自己发出的电平是否被真实地发送出去了,因为,根据线与特性,我发出1,如果有别的设备也在发送数据,别的设备发送了0,那么我读回的数据,就不再是1了,因为我的数据1,被别设备的数据,损坏了,这个现象,对仲裁就很重要,我发出1,但是读回的是0,这说明总线上有别的设备,所以这时候,我就退出,不再跟别设备抢总线资源了

非破坏性仲裁过程

  • 数据位从前到后依次比较,出现差异且数据位为1的设备仲裁失利
    在这里插入图片描述

问题:为什么ID小的优先级高

从这个仲裁过程可以看出来,ID号越小,其二进制数据的1出现的就越晚,ID号越大,1出现的就越早,ID号出现差异,且发出数据1的仲裁失利。

数据帧和遥控帧的优先级

  • 数据帧的优先级高于遥控帧
    在这里插入图片描述

    11位相同ID,不能给两者分出高下,这时,就要靠仲裁段的最后一位RTR来决断了,RTR位,遥控帧定义为1,数据帧定义为0,所以单元1会仲裁失利

标准格式和扩展格式的优先级

  • 标准格式的优先级高于扩展格式(SRR必须始终为1,以保证此要求)
    在这里插入图片描述

  • 11位ID号发完,单元1和单元2都没有分出胜负,接着下一位,单元1发出的是SRR位,SRR位,在扩展数据帧中,必须始终为1,单元2,此时要发出RTR位,因为单元2是数据帧,RTR位是0,所以单元1仲裁失利。

  • 当然标准遥控帧优先级也是比扩展数据帧优先级高,因为RTR后标准遥控帧仲裁段虽然结束了,但是扩展数据帧仲裁段仍然没有结束,标准遥控帧RTR之后,跟的是IDE扩展标志位,因为它是标准帧,所以下面IDE为0,而上面,扩展数据帖SRR之后跟的也是IDE,因为它是扩展帧,所以上面IDE为1,在这一位,虽然标准遥控帧已经不再执行仲裁了,但是扩展数据帧仍然执行仲裁,并且扩展数据帧会出现“发1读0”的情况,所以,扩展数据帧仲裁失利,转入接收状态。

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

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

相关文章

PLC通过Profibus协议转Modbus协议网关接LED大屏通讯

一、背景 Modbus协议和Profibus协议是两种常用于工业控制系统的通信协议,它们在自动化领域中起着重要的作用。Modbus是一种串行通信协议,被广泛应用于各种设备之间的通信,如传感器、执行器、PLC等。而Profibus则是一种现场总线通信协议&…

基于YOLOv5m的地面飞机及油罐的目标识别(附数据集和Coovally操作步骤)

本文主要内容:详细介绍了利用无人机拍摄的地面停靠的飞机机体以及油罐,进行识别,整个过程从创建数据集到训练模型再到预测结果全部可视化操作与分析。 文末有数据集获取方式,请先看检测效果 现状 飞机识别,在军事侦察、航空安全监…

各国内AI大厂推进大模型的阶段

2022 年 11 月,美国 AI 公司 Open AI 发布旗下 AI 聊天机器人程序 ChatGPT,该程序基于大型语言模型(LLM,Large Language Model) GPT-3.5,使用指令微调 (Instruction Tuning)和基于人…

一招教你房间内灰尘多怎么处理?除粉尘好用的空气净化器分享

在你吸尘、扫地、擦家具的时候,你或许会奇怪,为什么灰尘每天擦,每天有?即使门窗关得好好的,过几天还是会落上一层薄薄的灰。它们究竟是什么?对我们的健康又有什么影响呢?我们每天生活在房屋中&a…

Gotchi 战士们准备好吧!稀有度挖矿第八季锦标赛即将开始!

我们很高兴地宣布稀有度挖矿第 8 赛季的比赛即将开始,比赛将设立 15 万 GHST 的巨额奖金池,同时还将进行新的更新,让您有更多的方式来制定战略并与您的小鬼好友们一较高下。 本赛季引入了双败淘汰赛,每支队伍可以有两名替补队员&a…

vite项目配置高德api定位功能

项目场景: 用vite项目集成了一个H5页面的小程序,需要调用高德的定位API,在浏览器中测试的时候,出现了一系列定位失败的情况。 问题1 Get ipLocation failed、Geolocation permission denied 本地http访问下,定位失败…

基于PHP的草莓种植信息管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的草莓种植管理系统 一 介绍 此草莓种植管理系统基于原生PHP开发,数据库mysql,前端采用jquery.js和kindeditor在线HTML编辑器。系统角色分为用户和管理员。 技术栈:phpmysqljquery.jsphpstudyvsco…

在评论区的小发现

大约是近期比较频率的缘故,今天收到了系统私信,说我入围了本市博主周榜top100名单。本着虚心学习的态度,我打开了榜单。发现前几名获赞、阅读、评论都比我高多了。于是打开人家的主页,想拜读一下人家的文章。从内容上看&#xff0…

压测怎么做?如何自动化?盘点各大公司全链路压测方案与实践

本文综合盘点各大公司团队的全链路压测技术方案和实践路径,供大家参考。 一、什么是全链路压测? 全链路压测指的是基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。常用…

comfyui虚拟试衣、ai换装、电商换装源码

一、AI换装技术博客 1. 项目介绍 IDM-VTON 是一个虚拟试衣模型,可以在 ComfyUI 中进行部署。相比于其他虚拟试衣模型,如 OOTDiffusion,IDM-VTON 提升了图像保真度和细节保留,更强调真实感,而且就算是侧面的模特或者背面的模特都…

【Ubuntu】--- 创建用户 删除用户 及其他用户操作大全 持续更新中

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Ubuntu】--- 创建用户 删除用户 及其他…

c++中string用法详解

目录 二、案例需求 三、案例实现 1.首先获取strData中的角色数量 2.创造结构体数组,定义两个索引值 3.循环遍历对结构体User中的Id和Exp进行赋值 4.对结构体数组userArr进行排序 5.展示结果以及最终代码 ​四、最后 一、前言 在C中,std::string …

【Git】多人协作 -- 详解

一、多人协作(1) ⽬前,我们所完成的工作如下: 基本完成 Git 的所有本地库的相关操作,git 基本操作,分支理解,版本回退,冲突解决等等。 申请码云账号,将远端信息 clone…

(微服务实战)聚合支付系统商户线上聚合收银台接口设计

1 概述 聚合支付收款分为线上和线下业务场景,本文中的商户收银台接口设计主要是指线上业务场景,线下业务场景聚合收款方式后续会进行单独设计和分析。 主流的线上支付渠道有微信支付,支付宝支付,云闪付。这三种支付渠道都有各自…

Linux操作系统学习:day04

内容来自:Linux介绍 视频推荐:[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( 目录 day0422、通过文字设定法修改用户对文件的操作权限23、通过数字设定法修改文件的权限24、修改文件所有者和所属组25、tree—查看目录内…

Notes客户机开启事务日志

大家好,才是真的好。 了解过事务日志的人都知道——等等,你还不知道事务日志? 那我们先介绍一下,简单来说,Domino事务日志是捕获数据库更改并将其写入的记录,然后等服务器不繁忙或按计划更新到磁盘上的No…

虚拟机怎么额外搭建两个Redis节点,配置多个 Redis 实例

前提条件 在开始之前,请确保你已经具备以下条件: 一台已安装 Redis 的虚拟机。虚拟机上已安装基本的 Linux 工具(例如 FinalShell)。 步骤二:配置额外的 Redis 实例 接下来,我们将配置两个新的 Redis 实…

MYSQL无法启动的修复过程

记录一次MySQ无法启动的修复过程。 1. 错误表现 今天在用python操作数据库时可能有些错误(具体来说就是我尝试创建了一个已经存在的database),结果我发现MySQL中的那个database不存在了,我重启了一下电脑,结果mysql…

数模E题——信号干扰下的超宽带(UWB)精确定位问题

E 题——信号干扰下的超宽带(UWB)精确定位问题 思路:该题主要问题是对干扰进行识别和自适应消除,得到更加理想的定位的结果 代码下载 第一题问题思路与结果: 主要是对文件进行解析并对其中存在的数据丢失进行补偿&am…

网页右键不能审查元素解决办法

网页右键不能审查元素解决办法 1.问题复现2.解决方法 1.问题复现 有的网站右键不能审查元素 这时是javascript 中的onselectstart"return false" 被禁止右键了。 2.解决方法 隐私和安全--->网络设置 网络设置--->javascript 然后回到不能审查元素的网页 …