位填充定义(Bit Stuffing)
当CAN节点发送 逻辑电平(显性dominant或隐性recessive)为持续相同的5位时,它必须添加一位反向电平。 CAN接收 节点会自动删除这个新增的额外电平位。
位填充作用
1---位填充是为了防止突发错误而设定的功能。当某一个节点发生主动错误时,将把总线拉低6个bit宽度的显性电平“0”,及时向总线上其他单元汇报错误。
2---位填充是为了缩短从同步周期。重同步机制基于对隐性至显性跳变沿的评估。位填充机制保证了传输过程中有足够的跳变沿。ISO 11898-1规定,发送方在传输连续5个相同位后必须传输一个相反的位;即使连续5个相同位后本就是一个相反位,也需要添加填充位。
位填充区域
位填充从以SOF的传输为开始,以CRC序列的最后一位的传输为结束,因此在传输包含8个数据字节的标准格式的数据帧时,在极限情况下,应有24个填充位。所以,理论上标准格式数据帧最多包含132位。
采用标准数据帧发送 1 个字节数据时,发送方、总线、接收方逻辑电平波形图(显性0,隐性1)
CAN-ID = 0x78 = 0b 000 0111 1000 (11bit)
RTR = 0 (数据帧)
IDE = 0 (标准帧)
DLC = 1 (数据长度 1 个字节)
Data1 = 0xE1 = 0b 1110 0001
CRC = 0x709A = 0b 111 0000 1001 1010
从图中可以看出由于位填充的原因,总线上多出了8个紫色的填充位。