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”的情况,所以,扩展数据帧仲裁失利,转入接收状态。

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成了大锦鲤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值