你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用STM32L05x的CRC模块做modbus CRC16计算

[复制链接]
abc5504@139.com 提问时间:2017-11-24 17:00 /
根据参考文档,CRC模块可以配置CRC多项式,应该可以做(Modbus)CRC16计算,自己试了一下,发现结果不正确,总是一个固定值,不知道为什么?另外多项式应该是0x8005还是0xA001?
收藏 评论7 发布时间:2017-11-24 17:00

举报

7个回答
农夫水0533 回答时间:2017-11-28 10:15:06
如果是16位的POL寄存器设置0x1021即可。
abc5504@139.com 回答时间:2017-11-30 15:52:14
农夫水0533 发表于 2017-11-28 10:15
如果是16位的POL寄存器设置0x1021即可。

CRC16有两个计算多项式(百度百科),Modbus用的是x16+x15+x2+1,对应的多项式值是0x8005,但是有人说是0xA001。modbus协议的描述文档中,举例的C计算程序,其初始值也是0xA001。
abc5504@139.com 回答时间:2017-11-30 15:52:30
农夫水0533 发表于 2017-11-28 10:15
如果是16位的POL寄存器设置0x1021即可。

CRC16有两个计算多项式(百度百科),Modbus用的是x16+x15+x2+1,对应的多项式值是0x8005,但是有人说是0xA001。modbus协议的描述文档中,举例的C计算程序,其初始值也是0xA001。
农夫水0533 回答时间:2017-12-1 10:53:56
江湖书生 发表于 2017-11-30 15:52
CRC16有两个计算多项式(百度百科),Modbus用的是x16+x15+x2+1,对应的多项式值是0x8005,但是有人说是0xA0 ...

我用的多项式是X16+X15+X2+1  设置是0x1021 ,是正常可用。
abc5504@139.com 回答时间:2017-12-4 13:44:33
农夫水0533 发表于 2017-12-1 10:53
我用的多项式是X16+X15+X2+1  设置是0x1021 ,是正常可用。

谢谢!我试试看。
abc5504@139.com 回答时间:2017-12-4 13:47:55
农夫水0533 发表于 2017-12-1 10:53
我用的多项式是X16+X15+X2+1  设置是0x1021 ,是正常可用。

谢谢!回头我试试看。但是想知道0x1021是怎么来的,能讲一下吗?
土司Apple 回答时间:2018-5-30 14:47:21
是不是 大端用A001小端用8005呢?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版