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

江协科技 CAN总线入门课程(仲裁)

第四章的主题是总线的资源分配规则,也就是多个设备想同时发送波形时,总线如何进行资源分配。

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

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

接下来我们学习的就是CAN总线的资源分配规则。这个规则有两个,规则1是先占先得;规则2是非破坏性仲裁。这两个规则分别对应的是资源冲突的两种情况。其中第一种就是图中所展示的情况,在一个设备发送波形的中途,另一个设备想开始一个新的发送。这种情况好处理,直接不允许新的信号进来就行了。第二个情况就比较复杂,就是把第二个波形往前提,两个波形的起始位置是一眼的,两个设备都在同一时刻想要开始一段波形。既然它们是同时开始的,就没办法用先来后到判定谁先谁后了。第二种情况不太好处理,但是CAN总线设计了一种很巧妙的规则来解决这个问题,那就是非破坏性仲裁。

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

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

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

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

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

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

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

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

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

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

接下来我们用图形的方式详细解释一下仲裁的全过程。先看一下下面这个非破坏性仲裁过程,仲裁规则是:数据位从前到后依次比较,出现差异且数据位为1的设备仲裁失利。这里单元1和单元2也就是两个设备,他们的波形想要同时开始产生。其中,单元1第一位SOF是显性0,单元2第一位SOF也是显性0,两个单元同时张开总线,根据线与特性,总线呈现显性0。然后单元1回读总线电平,是0没问题;单元2回读总线电平,是0 也没问题。所以单元1和单元2会继续发送。SOF之后就是ID号了。单元1发送ID号最高位,是0;单元2发送ID号最高位,也是0,根据线与特性,总线呈现显性0。然后单元1回读为0和自己发的一样,没问题;单元2回读为0也和自己发的一样,没问题。所以单元1和单元2仍然会继续发送.......之后每一位都是如此判断。直到红色的这一位,在这一位时单元1的ID号是1,所以单元1发1,释放总线;单元2的ID号是0,所以单元2发0,拉开总线。根据线与规则,总线呈现显性0状态。之后单元2回读为0,和自己发的一样,没问题。但是,单元1这是回读,也是0,这就有问题了。单元1想自己明明发送的是1,但是读回总线电平为什么是0呢?这说明,有别的设备,正在和单元1抢总线,并且在这一位,我发1,它发了0,所以才会呈现出我发1但是读回却是0的现象。在此时刻单元1感知到了别的设备的存在并且单元1发出的数据1,被别的设备的数据0破坏了,所以单元1仲裁失利。之后单元1就转为接收状态,等到下一次总线空闲,再重新尝试发送。

接下来,我们再看两个细节问题,一个是数据帧和遥控帧的优先级,另一个是标准格式和扩展格式的优先级。

首先是数据帧帧和遥控帧的优先级,这里有个结论就是:•数据帧和遥控帧ID号一样时,数据帧的优先级高于遥控帧

接下来看下一个问题,标准格式和扩展格式的优先级:•标准格式11ID号和扩展格式29ID号的高11位一样时,标准格式的优先级高于扩展格式(SRR必须始终为1,以保证此要求)

http://www.dtcms.com/a/422911.html

相关文章:

  • Ubuntu 添加右键“复制全路径”菜单
  • 国企网站建设的意义电影影视网站模板免费下载
  • 网站主页设计模板房地产门户网站
  • 前端核心框架vue之(vuex状态篇4/5)
  • SheetGod:让Excel公式变得简单
  • 地信是“安卓”专业还是“苹果”专业?
  • 视频拼接类产品介绍
  • VSCode上配置Spring Boot环境
  • 线程同步实战指南:从 bug 根源到锁优化的终极之路
  • 中文企业展示网站模板优化wordpress后台速度
  • 做网站不赚钱了wordpress代码编辑
  • 云手机在硬件资源方面的优势
  • 技术深度解析:指纹云手机如何通过设备指纹隔离技术重塑多账号安全管理
  • 中国移动获得手机直连卫星通讯牌照:行业变革的催化剂
  • Chapter9—享元模式
  • 常州网站建设公司案例怎样做企业学校网站
  • 建设网站对企业的重要性企业网站网页设计有哪些
  • SpringBoot结合Vue 播放 m3u8 格式视频
  • 网站推广目标关键词龙岩网站设计找哪家好
  • 【论文阅读】ASPS: Augmented Segment Anything Model for Polyp Segmentation
  • 精读C++20设计模式——结构型设计模式:享元模式
  • FT8430-LRT非隔离5V100MA电源芯片,满足小家电、智能照明、MCU供电需求,替代阻容降压(典型案例,电路图)
  • [论文阅读]Benchmarking Poisoning Attacks against Retrieval-Augmented Generation
  • 精读C++20设计模式:结构型设计模式:装饰器模式
  • (数据结构)链表OJ——刷题练习
  • 怎么做网站源码温州建网站
  • 云服务器做淘客网站苏州网站制作及推广
  • hive启动报错
  • (基于江协科技)51单片机入门:6.串口
  • UE5 小知识点 —— 09 - 旋转小问题