(CAN) 什么是 RTR 和 SRR 位?

Luk*_*ali 1 embedded can-bus

RTR和SRR是缩写吗?

我知道两者都是位,但是当系统中没有 29 位标识符时,我对 RTR 所扮演的角色感到困惑,因为我相信仅标识符就足以发送消息。或者 CAN 是否自动假设我们在系统中具有不同的标识符长度,并且只有 SRR 位和 RTR 位才重要?

Lun*_*din 5

RTR 用于远程请求帧。该功能允许您发送空包,请求与 RTR 帧所用标识符相同的数据。此功能本身与标识符长度无关。

决定使用 11 位还是 29 位标识符的位是另一位,称为 IDE。IDE=0 给出 11,IDE=1 给出 29。


关于 RTR 与 SRR:

  • 对于11位标识符,11位标识符之后的位称为RTR。

  • 对于29位标识符,标识符的11个最高有效位之后的位更名为SRR,意思是“替代远程请求”。它始终设置为 1(隐性)。然后是 IDE + 标识符的其余部分,最后是 RTR。

这种设计意味着,无论 29 位帧的 RTR 状态如何,11 位标识符帧始终会赢得 11 msb 中具有相同二进制模式的 29 位标识符帧的仲裁。

(请记住,CAN 帧始终为大端字节序,最高有效位在前。)

在旧的博世规范“CAN2.0B”中采用这种方式,以向后兼容“CAN2.0A”。