我理解的仲裁,3个NODE同时发,ID最小的那个会赢得仲裁
NODE1 32F 011 0010 1111 第二个退出仲裁
NODE2 33F 011 0011 1111 最先退出仲裁 NODE2 32D 011 0010 1101 赢得仲裁
-----------------------------------------------------------------------------------------------------------
这是同时发送的情况,仲裁很好理解,那么如果不是同时发送呢?
一个NODE想要发送,条件是总线空闲,也就是11个bit 的逻辑1. 仲裁域11bit ,数据域有64bit最大,那么如果NODE1的数据域包含了11个逻辑1,会不会被NODE2认为是总线空闲? 总线被误认为空闲后,NODE2发出仲裁域数据,假设特别巧,正好NODE1的数据域里面的数据和NODE2的仲裁ID相同,那么NODE2岂不是以为自己赢得了仲裁?
如下:
NODE2的仲裁ID是011 0011 1111,NODE1的数据域中包含了111 1111 1111 011 0011 1111 NODE1先发送,因为NODE1占了总线,NODE2等待总线空闲,注意下面的红色部分,会不会让NODE2误认为总线空闲?
NODE1 【仲裁域】-----略-------【数据域-----111 1111 1111 011 0011 1111】----------略------------ NODE2 准备发送-------------------------总线看上去空闲------------NODE2仲裁ID和NODE1的数据恰好一致
这时候是不是就会出错了?
如果知道的大佬麻烦说两句,非常感谢!
|