stm32 移植Modbus后出现通讯错误

文章描述了一次在STM32微控制器上使用Freemodbus库进行485通讯时遇到的问题,触摸屏显示通讯超时和错误。经过排查,发现并非CRC校验程序错误,而是发送接收转换过快,数据未完全发送。解决方案是增加发送接收功能间的延迟,确保数据完整发送后再切换到接收状态。
摘要由CSDN通过智能技术生成

触摸屏使用485通讯 协议为Freemodbus 板子是STM32F407IGT6

移植完成后发现触摸屏一直显示通讯超时,检查硬件连接发现485正负极接反了。纠正后触摸屏显示通讯错误。

用串口调试助手查看报文:

触摸屏发:01 03 00 09 00 01 54 08

触摸屏收:01 03 02 27 0F E3 F0 (CRC校验错误 )

正确报文: 01 03 02 27 0F E3 B0

所以一直认为是CRC校验程序出错导致触摸屏显示通讯错误。

检查Modbus的CRC程序后发现程序无误。

实际原因是在串口使能的程序中,Modbus发送接收功能之间的转换过快,导致板子数据没发完就关闭了发送功能。实际上程序CRC校验是正确的,只是在我们看到的报文中,CRC校验是一串未发完的数,屏幕收到的也是一串未发完的数,导致通讯失败。

决解方法:增加发送接收功能转换的延时时长,使得数据完全发送完之后再转换成接收功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值