要看你是什么帧,标准帧还是扩展帧,一楼控制场数错了,还把CRC把校验位和CRC界定符弄成一起了,应答场也漏算了
标准帧:SOF+ID+RTR+r0+DLC+Data+CRC+CRCDel+ACK+ACKDel+EOF=1+11+1+1+1+4+(0~8)*8+15+1+1+1+7=44~108
扩展帧:SOF+ID+RTR+r0+DLC+Data+CRC+CRCDel+ACK+ACKDel+EOF=1+29+1+1+1+4+(0~8)*8+15+1+1+1+7=62~126
标准帧ID是11位,扩展帧ID是29为,数据场可以是0到8个字节,所以是(0~8)*8
更详细的可以追加给点分 问我哦 弄个这方面的专业工具对加深理解很有帮助的,我的答案我就是对照着CANspider的display数的绝不会错。
SOF:1位
仲裁段:12位
控制段:6位
数据段:0~64位
CRC段:15位
确认段:2位
帧结束段:7位
IFS:3位
所以最小为46位,最大为110位。
CAN是按照帧来发送的
不同帧数据长度是不一样的
标准格式数据帧包括:
1位帧起始位,11位ID位+1IRQ位,8个控制位,8字节的数据位,2字节的CRC校验位,7个终止位(记得不一定全面)
同时有码流控制功能,即位填充功能。当出现4个相同电平的位时,会在中间插入1个不同的位。
码流填充区域包括从起始位一直到数据位结束。
具体细节可以参见《现场总线CAN原理与应用》一书,北京航空航天大学出版社。
根据数据帧发送数据内容的不同会形成不同的位填充序列:
所以最小位数就是不位填充的情况下总位数。最大位数是全部出现位填充情况下的总位数。