理论教育 汽车嵌入式系统手册:帧仲裁实施和仲裁过程

汽车嵌入式系统手册:帧仲裁实施和仲裁过程

时间:2023-08-26 理论教育 版权反馈
【摘要】:利用这一特性,帧仲裁可以利用各节点在发送其标识符的同时监听总线来实施。图13.3 使用多个通信适配器传输的总线值图13.4显示了四个节点同时试图发送一个帧的场景。对于其他三个节点,仲裁继续进行,直到发送第五个标识符位,此时帧标识符为0×240和0×250的两个节点意识到它们都没有最高优先级的帧,于是仲裁停止。图13.4 在四个同步帧之间的仲裁

汽车嵌入式系统手册:帧仲裁实施和仲裁过程

通过帧仲裁——即在选帧过程中,CAN在一组节点同步传输的一组帧中,选择具有最高优先级的帧(这相当于带有最低标识符的帧),来实施冲突解决方案——CR。除了选择优先级最高的帧以外,帧仲裁还确保CAN总线免于冲突。为了保证此条件,CAN协议要求两个从不同的源节点发出的、同时激活的数据帧必须具有不同的标识符。综上所述,标识符具有以下用途:

•识别帧;

•为帧分配一个优先级;

•使接收器对帧进行过滤。

CAN物理层可确保:①空闲CAN总线的逻辑值为1;②如果任意节点发送0逻辑值,那么会造成总线逻辑值为0。因此,如果两个(或更多)的节点同时试图发送位,总线逻辑值只有1(如果所有节点发送逻辑值1)。图13.3说明了两个节点同时向总线上发送比特流时的以上原理。

利用这一特性,帧仲裁可以利用各节点在发送其标识符的同时监听总线来实施。如果总线值与刚刚写入的标识符位值不同,那么该节点会知道有更高优先级的帧试图访问总线,因此该节点停止发送信息。

978-7-111-52251-5-Part04-58.jpg(www.daowen.com)

图13.3 使用多个通信适配器传输的总线值

图13.4显示了四个节点同时试图发送一个帧的场景。一开始,总线处于空闲状态。每个节点都知道这一点,因为总线值为1。接下来,每个节点开始传送帧起始(SOF)位,如图13.1所示。由于每个节点既写入逻辑值0,也读入0逻辑值,因而没有节点会知道其他节点尝试在同一时间访问总线。现在,每个节点开始发送其标识符位。

对于两个首位,每个节点再次读取发送的同一个值,因此它们继续发送标识符位。然而,在第三标识符位,节点使用0×330的帧ID写入值是1,但读取值为0。在这个时候,节点知道它正在发送的不是最高优先级的帧,因此停止发送(但仍在监测总线,且在当前帧发送完毕后,等待总线变为空闲)。对于其他三个节点,仲裁继续进行,直到发送第五个标识符位,此时帧标识符为0×240和0×250的两个节点意识到它们都没有最高优先级的帧,于是仲裁停止。然而,帧标识符为0×220的节点可以继续发送完整的帧标识符。当这个完整的标识已经发送,只有一个节点知道它发送优先级最高的帧,且其他所有节点都停止发送。因此,节点可以继续发送剩余的帧,因为它知道在总线上不存在冲突。

CAN依靠CAN仲裁机制实现CSMA/CR,其过程就像一个全局性的、基于优先级的队列。值得注意的是,任何时候,无论进入仲裁的节点的数量有多少,仲裁时间都是恒定的。因此,CAN是分布式优先级队列的一个高度有效的实施。因此,CAN的行为类似于固定的优先级的、非抢占式的系统,也就是说,一旦一个节点已经赢得了仲裁,它就会总是完全传输帧,且在传输过程中任何可能会到达的更高优先级帧都必须等待,直到本次传输完成后的下一个仲裁回合开始。

978-7-111-52251-5-Part04-59.jpg

图13.4 在四个同步帧之间的仲裁

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈