CAN:SRR位有什么用

目录

问题来源

问题

答案

思考过程(错误的思路)

详细解答

1. 标准格式的数据帧与遥控帧仲裁

2. 扩展格式的数据帧与遥控帧仲裁

3. 数据帧的标准格式与扩展格式仲裁

4. 遥控帧的标准格式与扩展格式仲裁

参考链接


问题来源

上图是CAN的数据帧的两种格式,在扩展格式中SRR是固定数值,SRR位永远置1,对它的解释 一般是‘代替标准帧中的  RTR 远程请求位,无实际意义’。

 于是想到了一个问题,永远保持一个固定数值,真的没有任何意义吗?没有意义的话,为什么寸‘位’寸金的帧结构要专门留一个位置放它呢。

问题

CAN-数据链路层-Data Frame-扩展格式中:SRR位永远置1,为什么还要保留?

答案

最主要的作用是,划分标准帧与扩展帧的优先级。SRR确保竞争时,标准帧优先于扩展帧。SRR之后的IDE也是同样的作用。

其实,如果把问题改成,为什么SRR永远置1而不是置0,这个答案就呼之欲出了。

思考过程(错误的思路)

最初思考时,主要猜测保留SRR位有3个方面的可能性:

1. 使帧结构尽量一致(标准帧与扩展帧) 2. 冗余设计 3. 隔离作用

其中2,3稍微有点是 给它硬掰过去的优点,毕竟要说是隔离作用,SRR后面 还有IDE,要说是荣誉设计,还有r0,r1。

相对来说只有1的意义稍微说得通一点。

因 扩展格式与标准格式的最大区别就是,ID的位数不同,扩展格式的ID有28Byte,标准格式的ID是11Byte 是在原本的11Byte的基础上,增加了18Byte。

一般来说,只是增加18Byte,那么可以设计为 连续的28Byte,然后再增加IDE为r位即可。可是实际却没有这样设计。

实际的设计如上面的图片:

  • 扩展格式:11Byte ID + SRR + IDE + 【18Byte ID + RTR + r1】 + r0 +下一个Field。
  • 标准格式:11Byte ID + RTR + IDE + r0 +【 下一个field】。

如果把增加的18Byte看成是‘下一个field’,那么 两者的帧结构及其相似。而之所以这样是因为猜测帧结构尽量一致的话,可以减少帧结构的类型,减轻收发器识别的计算复杂度。

但这个解释也不太能说得通,如果是为了维持帧结构变化少,那么扩展格式中 r0的位置应该在【18Byte ID + RTR + r1】的前面,如下:

  • 扩展格式(实际):11Byte ID + SRR + IDE + 【18Byte ID + RTR + r1】+ r0 +下一Field。
  • 标准格式(实际):11Byte ID + RTR + IDE + r0 +【 下一field】。
  • 扩展格式(假设):11Byte ID + SRR + IDE + r0 +【18Byte ID + RTR 】+ r1 +下一Field。

至此推翻了所有关于保留SRR位的猜测。

也没有思路,准备就此作罢的。然后在记录这个问题到思维导图的时候,突然想搜一搜之前的笔记,有没有关于这个位的记录,合并处理一下。结果发现了意外之喜——看到了一条意义明确的记录:

 这条记录来自 CAN总线的特点和帧结构 这篇文章。里面详细介绍了SRR位的作用,以及与RTR、IDE组合使用的几种情况。下面在这里转述一遍。

详细解答

仲裁的最基本情况1是:在ID的前11位就能结束仲裁。

而当在ID的前11位未结束仲裁,即说明前11位ID相同。这时需要进一步分为4种情况来讨论:

1. 标准格式的数据帧与遥控帧仲裁

因为ID18后是RTR位,数据帧的RTR位恒为显性,遥控帧的RTR位恒为隐性。此时数据帧将仲裁胜出,即前11位ID号相同时,标准数据帧的优先级高于标准遥控帧。

2. 扩展格式的数据帧与遥控帧仲裁

当前11位ID和后18位ID全相同时,由于这种情况下的SRR位和IDE位均为隐性,故也是看RTR位。扩展数据帧的RTR位恒为显性,扩展遥控帧的RTR位恒为隐性,此时数据帧将仲裁胜出。即前11位ID号相同时,扩展数据帧的优先级高于扩展遥控帧。

在前11位ID相同,后18位ID不相同时,仲裁过程与情况1一样。

3. 数据帧的标准格式与扩展格式仲裁

因为ID18后,标准格式的是RTR位,扩展格式的是SRR位,仲裁这两位,而标准格式的RTR位恒为显性,扩展格式的SRR位恒为隐性,故此时标准格式的数据帧仲裁胜出。即前11位ID号相同时,标准数据帧优先级高于扩展数据帧。

4. 遥控帧的标准格式与扩展格式仲裁

因为ID18后两者均是IDE位,扩展格式的IDE位恒为隐性,标准格式的IDE位在控制段,恒为显性,故标准格式的遥控帧仲裁胜出。即前11位ID号相同时,标准遥控帧优先级高于扩展遥控帧。

(改天贴图在这里  todo)

通过上述分析,就知道了仲裁段的各种仲裁情况,尤其是在前11位ID号相同时,根据协议设定的RTR, SRR, IDE,就可以保证:

  • RTR:保证数据帧优先级高于遥控帧;

  • SRR :保证标准数据帧的优先级高于扩展数据帧;

  • IDE :保证标准遥控帧的优先级高于扩展遥控帧。

思路

SRR在扩展帧feild划分中属于仲裁场,从这一层来看,也可以理解它的主要作用是用于仲裁。

 

参考链接

1. CAN总线的特点和帧结构

2. CAN总线学习笔记(2)- CAN协议数据帧与遥控帧_weixin_40528417的博客-CSDN博客_can 数据帧

END

  • 11
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

picoasis

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

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

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

打赏作者

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

抵扣说明:

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

余额充值