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

用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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版