我知道CAN总线进行仲裁的方式。简而言之,在其标识符中具有更多“0”的CAN节点ID赢得了在总线上传输的仪式,其余的竞争节点退回。
但是在重新尝试赢回公交车之前,我没有找到how long
被退出节点的任何细节。我咨询了一些消息来源,但仍无法找到答案。有任何实验证据吗?
答案 0 :(得分:2)
在传输获胜帧之后可以再次尝试,并且在“间歇”字段中没有找到显性位#34;在CAN帧的末尾。如果您搜索"间歇字段"的规范,您可能会找到对此的正式定义,请参阅您链接的旧(过时)博世规范的3.1.5。
这里的重要部分是要意识到每个CAN控制器都会监听每一帧,即使它对它不感兴趣。这就是你如何实现碰撞避免,而不是碰撞检测。
答案 1 :(得分:1)
如博世CAN规范文档中所述,当总线空闲状况发生时,所有CAN节点都可以开始发送待处理帧(总线上没有显性位)。在帧间间隔期间的间隔期间,没有节点可以发送(可以发送过载帧但不能发送数据帧或远程帧)。在此期间,CAN节点必须等待3个隐性位。所有节点都可以在这个间歇期后立即开始传输。
如果在间歇期后多个节点立即启动,则最低标识符帧将赢得仲裁。如果来自不同节点的远程和数据帧(都具有相同的标识符)开始,则数据帧将赢得仲裁。
答案 2 :(得分:1)
我同意上面的答案,但我正在寻找对CAN总线时序的更多数学分析。我发现了这篇优秀的讲义:Time analysis of CAN messages 。第3章