如果您看到这篇文章,说明你也是个会思考的人
1:CAN填充位会不会影响ID段的仲裁?
要了解清楚这个问题,我们先要了解两个问题
1:填充规则和作用范围
2:仲裁的规则和作用范围
答1:填充作用于SOF-CRC段。
规则:如果总线上相邻5bit,是相同极性的电平(都是隐性电平),则在第6bit插入1位,相反极性的电平(显性电平)。需要注意这里的插入,是指增加了1bit,数据原有的bit不会被覆盖,一定要注意。
答2:仲裁作用范围 :11bitID段+RTR(以CAN标准帧为例子)。
规则,从MSB位开始按位仲裁,显性电平优先级>隐性电平优先级。
如 帧1 ID = 显 显 显 .....
帧2 ID = 显 显 隐......
如果帧1帧2同时发送,则 仲裁到 第三位时,帧2胜出,获得发送权。
将以上例子扩展一下,与帧填充结合起来看
帧1 ID = 显显显显显(此处必须插入1bit隐)隐隐隐隐隐(此处必须插入1bit显)显
帧2 ID = 显显显显隐隐隐隐显显显
可以看到帧1实际发送到总线上的是,13bit。帧2是卡着填充规则,只发送了11bit。大家按上面的实际数据,看一下,帧填充会不会影响仲裁结果。
结果显而易见,根本不会影响仲裁结果
2:再看第二种情况,我们先提出一个问题?填充的位参不参与仲裁
看例子
帧1 ID = 显显显显显(此处必须插入1bit隐)显隐隐隐隐显
帧1 ID = 显显显显显(此处必须插入1bit隐)隐隐隐隐显显
可以看出,实际上填充位也参与仲裁,上面填充位参与仲裁了之后,进入下一位仲裁,此时帧1胜出。