最近在看Modbus RTU的通讯,在自编和程序中,我看到CRC校验的程序,但我不怎么明白,为什么CRC16的多项式就是0XA001这是基于什么原因呢?
0XA001是MODBUS的生成多项式,这是一个固定样式
你可能看到过别的生成多项式,
比如
CRC12 80F
CRC16 8005
CRC16-CCITT 1021
CRC32 04C11DB7
所谓CRC算法是以GF(2)(2元素伽罗瓦域)多项式算术为数学基础的
那么0XA001就是多项式 X^15+X^13+1
不同的多项式,起检错能力是不同的 也就是说 0XA001 就是MODBUS规定的一个生成多项式,你只要记住就行了。