qq_52897741 2023-02-16 21:39 采纳率: 71.4%
浏览 26
已结题

STM32串口485读取多个设备信息

我通过STM32单片机两个串口分别读取两个设备的信息并向上位机发送数据,两个串口的波特率不同,,串口485协议定时通过两个串口发送读取命令,刚开始测试的时候读取数据正常,但是运行一段时间之后数据就开始出现误差,在过了一段时间就停止向上位机发送信息。
个人猜测是串口发送读取命令出现错误,于是我分别测试单独读取单个设备的信息,没有问题,但是两个设备一起读取就又出现上述的错误,所以发帖向大家请教可能原因。

  • 写回答

2条回答 默认 最新

  • Evaporator Core 2023-02-16 21:55
    关注

    出现这种问题有可能是因为串口通信过程中的一些错误导致的,以下是一些可能的原因和解决方法:

    波特率设置不正确:确认两个串口的波特率设置是否正确,并且是否匹配上位机的波特率设置。如果波特率设置不匹配,可能会导致串口数据传输出错。
    延时设置不合理:确认串口通信过程中的延时设置是否合理。如果延时时间过长或过短,可能会导致串口通信出现问题。建议使用适当的延时时间。
    数据解析不正确:确认程序中对接收到的数据进行解析的代码是否正确。如果解析不正确,可能会导致发送给上位机的数据出现误差。
    缓存区溢出:确认程序中是否有缓存区溢出的情况发生。如果缓存区溢出,可能会导致数据发送出错或者停止发送数据。可以尝试增加缓存区大小或者调整程序中的读取和发送数据的频率。
    电磁干扰:确认系统中是否有电磁干扰的情况。如果存在电磁干扰,可能会导致串口通信出现错误。可以考虑在系统中增加屏蔽措施或者调整串口通信的距离。
    以上是一些可能的原因和解决方法,可以根据具体情况进行排查和解决。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月16日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c