CAN扩展帧,将帧间间隔3bit也计入计算;
一、不计算位填充,一帧共计131bit
1SOF+11ID+1SRR+1IDE+18ExtendedID+1RTR+1r1+1r0+4DLC+64Data+15CRC+1DEL+1ACK+1DEL+7EOF+3ITM=131bit;
二、计算位填充,一帧共计154bit
从SOF到CRC是进行位填充的部分,共计118bit,按照5位相同一填充的规则,118/5=23,
所以131+23=154;
但我看到好多图画扩展帧算上位填充共150bit,我就不知道我计算哪里有问题了,请各位
根据CAN 2.0B协议规定,扩展帧包含SOF、ID、SRR、IDE、ExtendedID、RTR、DLC、Data、CRC、ACK、EOF等字段,其中SOF、EOF、ACK等字段不包括在总线帧长计算中。因此,在不计算位填充的情况下,扩展帧的总线帧长为131bit,这一点是正确的。
但是,在计算位填充时,需要考虑CAN协议中位填充的规则。位填充是为了保持总线信号在一定频率范围内,从而满足总线传输的要求。CAN协议规定,每隔5个连续相同的位,都要填充一个相反的位,这就是位填充。在扩展帧中,从SOF到CRC这段区间中的所有数据都要进行位填充。按照这个规则进行计算,扩展帧的总线帧长为154bit,这一点也是正确的。
至于您提到的一些图示中扩展帧总线帧长为150bit的情况,可能是因为这些图示没有考虑到位填充。在实际的CAN应用中,位填充是必须考虑的因素。