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

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

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

  • 写回答

2条回答 默认 最新

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

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

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

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 GD模块安装出错,libgd无法正常安装
  • ¥20 求有缘人帮我把笛卡尔坐标系转换为经纬度 有偿
  • ¥15 vue2中使用计算属性
  • ¥50 远程桌面打开Mastercam、没有许可证、物理机打开正常
  • ¥15 ubuntu安装gdal后java读取tif文件报错
  • ¥15 请问lammps怎么做两种金属连接的原子浓度分布图
  • ¥15 求jacquard数据集
  • ¥15 w10部分软件不能联网
  • ¥15 关于安装hbase的问题(操作系统-windows)
  • ¥15 novnc连接pve虚拟机报错安全协议不支持262