打印
[其他]

CAN协议总线仲裁原理:数据发送权争夺

[复制链接]
1318|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tfqi|  楼主 | 2023-10-27 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CAN总线仲裁原理是指在多个CAN节点同时发送数据时,如何避免冲突并选择一个节点作为发送者。CAN总线的仲裁原理基于一个分布式仲裁机制,它可以快速而可靠地确定哪个节点可以获得总线控制权,从而发送数据。 CAN总线仲裁原理的具体过程如下:

当多个CAN节点同时发送数据时,它们会首先检查总线上的状态。如果总线上的状态是低电平,则表示总线正在被占用,节点会等待一段随机的时间后再次检查总线状态。
如果总线状态为高电平,则表示总线可用,节点开始发送数据,同时在总线上发送自己的标识符(ID)。
在CAN总线上,每个节点都有一个唯一的标识符(ID),标识符中的高位优先被处理。当多个节点同时发送数据时,CAN控制器会根据ID的优先级来选择一个节点作为发送者。
当多个节点发送的标识符相同时,仲裁机制会根据标识符中的高位来进行决策。在这种情况下,ID中越高位的节点将优先获得总线控制权,因为在标识符的高位上,1的数量越多,表示节点的优先级越高。
一旦一个节点获得了总线控制权,它将继续发送数据,直到数据传输完成。其他节点将停止发送数据,并等待下一次机会。 总之,CAN总线仲裁原理采用了分布式仲裁机制,可以快速而可靠地确定哪个节点可以获得总线控制权,从而避免数据冲突,保证数据传输的可靠性和稳定性。同时,CAN总线仲裁原理还可以提高总线的利用率,减少数据传输的延迟。
CAN总线节点通过仲裁机制来竞争总线控制权。在每个CAN数据帧的标识符(ID)中,位数较低的表示优先级较高,因此优先级较高的节点具有更大的机会获得总线控制权。CAN总线上的节点在发送数据前,会先检查总线上的状态,如果总线正在被占用,则等待一段时间后再次检查总线状态。如果总线空闲,则开始发送数据,并在总线上广播自己的ID。在发送ID的同时,节点会持续检查总线状态,以确定是否有其他节点在同时发送数据,如果检测到总线上有其他节点在发送,就会立即停止发送,并等待下一次机会。如果没有检测到其他节点在发送,则该节点将继续发送数据,直到数据传输完成,然后释放总线控制权,等待下一次机会。 当多个节点同时发送数据时,CAN总线控制器会根据ID的优先级来选择一个节点作为发送者。如果多个节点的ID相同,则CAN总线控制器会根据ID的高位来进行决策,ID中高位为1的节点将优先获得总线控制权。一旦一个节点获得了总线控制权,它将继续发送数据,直到数据传输完成。其他节点将停止发送数据,并等待下一次机会。 在CAN总线上,节点可以自由进入和退出总线竞争。如果一个节点需要发送数据,但检测到总线上有其他节点正在发送数据,则该节点会立即停止发送,并等待下一次机会。如果一个节点不需要发送数据,或已经完成发送数据,则可以释放总线控制权,并退出总线竞争。总之,CAN总线节点可以通过仲裁机制来竞争总线控制权,并根据优先级来确定谁获得总线控制权,从而实现数据传输的可靠性和稳定性。

备注:can控制器在发送数据的同时会检测总线电平显隐性,一旦发送电平和接收电平不同,如果处于仲裁阶段则退出总线竞争,如果为数据发送阶段则数据发送错误。
————————————————
版权声明:本文为CSDN博主「嵌入式小宁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_53592457/article/details/129795975

使用特权

评论回复

相关帖子

沙发
tpgf| | 2023-11-3 17:31 | 只看该作者
会出现竞争混乱的现象么

使用特权

评论回复
板凳
qcliu| | 2023-11-4 13:53 | 只看该作者
一条can总线上可以挂多少个设备呢

使用特权

评论回复
地板
drer| | 2023-11-4 14:39 | 只看该作者
总线仲裁是由总线上各个节点自己识别的是吧

使用特权

评论回复
5
wiba| | 2023-11-4 15:27 | 只看该作者
当总线处于空闲状态时呈隐性电平,此时任何节点都可以向总线发送显性电平作为帧的开始

使用特权

评论回复
6
kxsi| | 2023-11-4 22:54 | 只看该作者
 CAN总线采用的是一种叫做“载波监测,多主掌控/冲突避免”(CSMA/CA)的通信模式

使用特权

评论回复
7
coshi| | 2023-11-4 23:23 | 只看该作者
这种仲裁原理不会涉及到单片机资源的占用吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

3316

帖子

4

粉丝