首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CAN总线空闲检测

CAN总线空闲检测
EN

Stack Overflow用户
提问于 2017-12-20 21:15:15
回答 1查看 1K关注 0票数 1

对于CAN,帧在遇到SOF (0)时开始。但是假设我们的系统刚刚加入了CAN总线。它如何能够检测到新CAN帧的开始?

EOF是7个隐性比特加上3个IFS (帧间间隔) bits..so,我们可以等待10个连续的1,然后如果之后切换到0,我们可以将其视为新帧的开始。

但是,如果以前只连接了一个节点呢?然后,如果我们看到ACK位是1,ACK定界位是1,7个EOF帧位是1,那么在这三个IFS位之前,我们得到10位(隐性)。如果我们的节点在IFS位周期内开始发送数据,系统会发生什么情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-26 15:31:26

抱歉,我的假设有误。如果我们看到CAN帧结构,那么节点需要监控总线,如果检测到11个连续的位为'1‘,那么只有节点会认为总线是空闲的。

对上述声明的解释。

一个ACK_DELIMETER位、七个EOF位和三个IFS位。

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

然后,第二节点将在CRC-DELIMETER、ACK_SLT、ACK_DELIMETER、七个EOF比特和三个IFS比特中检测一个。如果节点2有数据要发送,那么它将在IFS时间的两个比特发送它,认为总线在那个时刻是空闲的(因为11个比特的值为1)。

但是根据Bosch的CAN 2.0协议规范,如果节点在IFS时间的1和2比特中检测到0比特,则它发送开始过载标志。因此,在这里,节点1将开始发送过载标志,并且从下一次开始,通信将正确工作。

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

如果你认为这是不是这样做的,请随时分享评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47906919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档