用STM32L05x的CRC模块做modbus CRC16计算
根据参考文档,CRC模块可以配置CRC多项式,应该可以做(Modbus)CRC16计算,自己试了一下,发现结果不正确,总是一个固定值,不知道为什么?另外多项式应该是0x8005还是0xA001?如果是16位的POL寄存器设置0x1021即可。 农夫水0533 发表于 2017-11-28 10:15
如果是16位的POL寄存器设置0x1021即可。
CRC16有两个计算多项式(百度百科),Modbus用的是x16+x15+x2+1,对应的多项式值是0x8005,但是有人说是0xA001。modbus协议的描述文档中,举例的C计算程序,其初始值也是0xA001。 农夫水0533 发表于 2017-11-28 10:15
如果是16位的POL寄存器设置0x1021即可。
CRC16有两个计算多项式(百度百科),Modbus用的是x16+x15+x2+1,对应的多项式值是0x8005,但是有人说是0xA001。modbus协议的描述文档中,举例的C计算程序,其初始值也是0xA001。 江湖书生 发表于 2017-11-30 15:52
CRC16有两个计算多项式(百度百科),Modbus用的是x16+x15+x2+1,对应的多项式值是0x8005,但是有人说是0xA0 ...
我用的多项式是X16+X15+X2+1设置是0x1021 ,是正常可用。 农夫水0533 发表于 2017-12-1 10:53
我用的多项式是X16+X15+X2+1设置是0x1021 ,是正常可用。
谢谢:)!我试试看。 农夫水0533 发表于 2017-12-1 10:53
我用的多项式是X16+X15+X2+1设置是0x1021 ,是正常可用。
谢谢!回头我试试看。但是想知道0x1021是怎么来的:),能讲一下吗? 是不是 大端用A001小端用8005呢?
页:
[1]