打印
[STM32F3]

用硬件CRC算Modbus校验,算出来值不对

[复制链接]
277|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Clyde011|  楼主 | 2025-6-6 07:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
直接用硬件CRC模块算Modbus RTU帧,结果总是不一致,难道算法不兼容?

使用特权

评论回复
沙发
Clyde011|  楼主 | 2025-6-6 07:22 | 只看该作者
最好自己用软件调试过一次再移到硬件上。

使用特权

评论回复
板凳
公羊子丹| | 2025-6-6 07:23 | 只看该作者
Modbus CRC是反序+异或,有点特别。

使用特权

评论回复
地板
周半梅| | 2025-6-6 07:24 | 只看该作者
STM32自带的CRC不能直接用在Modbus上。

使用特权

评论回复
5
帛灿灿| | 2025-6-6 07:28 | 只看该作者
建议自己写个Modbus用的查表算法。

使用特权

评论回复
6
童雨竹| | 2025-6-6 07:29 | 只看该作者
你数据顺序是不是有点问题?

使用特权

评论回复
7
万图| | 2025-6-6 07:30 | 只看该作者
看下是不是高低字节顺序搞反了。

使用特权

评论回复
8
Wordsworth| | 2025-6-6 07:31 | 只看该作者
要先异或0xFFFF才能开始计算。

使用特权

评论回复
9
Bblythe| | 2025-6-6 07:31 | 只看该作者
我之前硬算也不对,还是软件靠谱。

使用特权

评论回复
10
Pulitzer| | 2025-6-6 07:32 | 只看该作者
Modbus CRC是标准的0xA001多项式。

使用特权

评论回复
11
Uriah| | 2025-6-6 07:33 | 只看该作者
STM32的CRC是32位的,Modbus只要16位。

使用特权

评论回复
12
weifeng90| | 2025-6-6 08:22 | 只看该作者
用的CRC校验位数是多少?

使用特权

评论回复
13
flycamelaaa| | 2025-6-6 10:50 | 只看该作者
硬件CRC模块与Modbus RTU的CRC-16算法不匹配。

使用特权

评论回复
14
flycamelaaa| | 2025-6-6 10:50 | 只看该作者
如果硬件CRC模块不支持自定义多项式,建议使用软件实现Modbus RTU的CRC-16算法。

使用特权

评论回复
15
powerantone| | 2025-6-6 10:51 | 只看该作者
STM32F3的硬件CRC模块默认不支持Modbus RTU的CRC-16算法,或配置不正确。

使用特权

评论回复
16
stormwind123| | 2025-6-6 12:00 | 只看该作者
用软件实现CRC-16算法,简单可靠。

使用特权

评论回复
17
probedog| | 2025-6-6 13:00 | 只看该作者
如果硬件CRC模块支持自定义多项式,可尝试配置,但需注意兼容性。

使用特权

评论回复
18
codingtuzi| | 2025-6-6 21:17 | 只看该作者
ST里面的CRC外设是CRC32-MPEG2算法,和Modbus-RTU的CRC16-Modbus算法是不一样的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

4735

帖子

0

粉丝