CAN总线空闲检测

问题描述 投票:1回答:1

对于CAN,当遇到SOF(0)时帧开始。但是,让我们说我们的系统刚刚加入CAN,它将如何检测新CAN帧的启动?

EOF是7个隐性位加上3个IFS(帧间间隔)位...所以我们可以等待10个连续1然后如果有一个切换到0之后我们可以认为这是新帧的开始。

但是,我的问题是如果之前只连接了一个节点会怎样。然后,如果我们看到ACK位为1,则ACK定界符位为1且7个EOF帧位为1.因此,在3个IFS位之前,我们只得到10位(隐性)如果我们的节点开始在IFS中发送数据比特周期系统会发生什么?

embedded can-bus canopen
1个回答
0
投票

对不起,我的假设有误。如果我们看到CAN帧结构,则节点需要监视总线,如果11个连续位被检测为“1”,则只有节点将该总线视为空闲。

上述声明的解释。 1个ACK_DELIMETER位,7个EOF位和3个IFS位。

所以,现在如果我们假设只有一个节点连接到系统并且下一个节点连接,而第一个节点正在传输CAN帧的数据部分。

然后第二个节点将检测CRC-DELIMETER中的1,ACK_SLT,ACK_DELIMETER,7个EOF位和3个IFS位。如果节点2有一个要发送的数据,那么它会在IFS时间的2位发送它,考虑到那时总线是空闲的(因为11位为1位)。但是根据博世的CAN 2.0协议规范,如果一个节点在1和2比特的IFS时间内检测到0比特,那么它会发送过载标志。因此,节点1将开始发送过载标志,并且从下次开始通信将工作正常。

如果1也作为CRC的最后一位,那么第二个节点可能会开始在IFS时间的1个位发送帧,并且节点1将开始发送过载帧作为规范的一部分,同样的事情将发生。

如果您认为这是不完整的,请随时分享评论。

© www.soinside.com 2019 - 2024. All rights reserved.