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

[复制链接]
731|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上。
帛灿灿 发表于 2025-6-6 07:28 | 显示全部楼层
建议自己写个Modbus用的查表算法。
童雨竹 发表于 2025-6-6 07:29 | 显示全部楼层
你数据顺序是不是有点问题?
万图 发表于 2025-6-6 07:30 | 显示全部楼层
看下是不是高低字节顺序搞反了。
Wordsworth 发表于 2025-6-6 07:31 | 显示全部楼层
要先异或0xFFFF才能开始计算。
Bblythe 发表于 2025-6-6 07:31 | 显示全部楼层
我之前硬算也不对,还是软件靠谱。
Pulitzer 发表于 2025-6-6 07:32 | 显示全部楼层
Modbus CRC是标准的0xA001多项式。
Uriah 发表于 2025-6-6 07:33 | 显示全部楼层
STM32的CRC是32位的,Modbus只要16位。
weifeng90 发表于 2025-6-6 08:22 来自手机 | 显示全部楼层
用的CRC校验位数是多少?
flycamelaaa 发表于 2025-6-6 10:50 | 显示全部楼层
硬件CRC模块与Modbus RTU的CRC-16算法不匹配。
flycamelaaa 发表于 2025-6-6 10:50 | 显示全部楼层
如果硬件CRC模块不支持自定义多项式,建议使用软件实现Modbus RTU的CRC-16算法。
powerantone 发表于 2025-6-6 10:51 | 显示全部楼层
STM32F3的硬件CRC模块默认不支持Modbus RTU的CRC-16算法,或配置不正确。
stormwind123 发表于 2025-6-6 12:00 | 显示全部楼层
用软件实现CRC-16算法,简单可靠。
probedog 发表于 2025-6-6 13:00 | 显示全部楼层
如果硬件CRC模块支持自定义多项式,可尝试配置,但需注意兼容性。
codingtuzi 发表于 2025-6-6 21:17 | 显示全部楼层
ST里面的CRC外设是CRC32-MPEG2算法,和Modbus-RTU的CRC16-Modbus算法是不一样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

154

主题

5861

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部