CAN总线CRC生成多项式位数与帧写入方式的技术疑问
CAN总线CRC多项式与15位CRC字段的疑问解答
- 首先明确:CAN总线的CRC字段存储的不是生成多项式本身,而是数据经过CRC计算后的15位余数。你提到的生成多项式是协议内置的计算规则,不需要手动写入数据帧。
- 关于生成多项式的位数:生成多项式是
x^15 + x^14 + x^10 + x^8 + x^7 +x^4 +x^3 + 1(x^0就是常数项1),对应的二进制为1100010110011001(16位),但CRC计算逻辑是:- 将待校验的数据左移15位(相当于在数据末尾补15个0)
- 用这个扩展后的数据与生成多项式做模2除法
- 得到的余数为15位(除数是16位,余数位数必然比除数少1位),这个余数就是写入CAN帧CRC字段的内容
- x^0项(常数项1)是生成多项式的固有组成部分,协议栈或硬件在执行CRC计算时会自动调用完整的多项式,不需要你在CRC字段里额外添加,只需确保发送的帧包含计算正确的15位余数即可。
内容的提问来源于stack exchange,提问作者sarvar1899
相关产品推荐
相关产品推荐

