我混淆了CAN 11位和29位协议(RTR在11位,SRR在29位帧)。请解释一下为什么我们在29位can协议中使用SRR位而不是RTR位。
发布于 2017-04-26 06:14:29
这条消息解释了为什么:http://www.microchip.com/forums/m376934.aspx
CAN总线认为11位标识符比29位标识符具有更高的优先级。
(因为两种类型的“协议”,即"11“和"29",可以在同一总线上共存)。因此:
在29位扩展帧的情况下,RTR位已经移动到消息的末尾,因此它不会在29位In的优先位仲裁中发挥作用。这就是为什么标准帧RTR现在被定义为SRR作为隐性传输。防止29位RTR消息比非RTR消息具有更高的优先级。
...and,这个页面也是这样:http://hem.bredband.net/stafni/developer/CAN.htm
仲裁字段中包含一个替代远程请求(SRR)位。SRR位始终作为隐性比特发送,以确保在标准数据帧和扩展数据帧之间的仲裁情况下,如果两个消息具有相同的基本(11位)标识符,则标准数据帧始终具有优先级。
发布于 2021-06-02 16:07:00
当网络中同时存在STD和扩展帧时,即SRR(替代远程请求)位不存在,STD帧的RTR比特和扩展帧的比特之间进行仲裁。如果此STD帧是remote frame ,则仲裁不会在此结束。比较了下一位,即在STD帧和1位在扩展帧中的地址。如果18位地址中的1位为零,仲裁将继续进行。
下一个仲裁比较是STD中的"r0“和18位地址中的”2位“。无论如何,r0将永远是隐性的。如果XTND帧的18位地址中的第2位是,则仲裁将由扩展帧获得,这是不正确的。因此,要使STD帧具有优先级,必须使用SRR帧。因此,只有它被称为替代。
性病-XTND
索夫-- SOF
11位--11位
RTR --IDE
IDE -第一位18位地址
https://stackoverflow.com/questions/43625990
复制相似问题