我和我的星星都醉了 2023-07-25 13:42 采纳率: 60%
浏览 26

串口通讯中数据收发有误

串口通信遇到一个很奇怪的问题,刚开始的时候接受不到数据,然后突然可以接受到但数据有误,用的是两根TTL转USB的线,串口号波特率什么的也是对得上的。
这是代码,实现了简单的接受数据。

img


在接受数据的时候会突然多出一行

img


返回结果也不对

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-25 16:14
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/339580
    • 除此之外, 这篇博客: USB转网口转485转232转TTL等多接口互转调试工具,无需拨动开关自动切换连接中的 设计难点: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      (1)如何实现网口、USB、485、232、TTL等5种模式 十种通讯方式互相转换
      根据平时在网上收集资料发现,网上也有类似的调试工具,均是见上述几种通讯模式转为TTL,然后再相互转化。缺点,使用过程中需要接跳线或者切换模式的开关。
      (2)如何实现485自动收发
      因为485是属于半双工的串行总线,在收发的过程中需要控制485芯片控制脚位来实现收发,但是我们设计的调试工具为了简单方便使用,就未使用单片机等控制芯片。所以我们需要实现RS485转TTL自动收发功能。先上原理图在这里插入图片描述
      实现原理介绍
      接收的时候分析,RXD_485为高电平,三极管Q1导通,DE和RE为低电平。此时485处于接收模式。A,B为高阻,信号由另一端来控制,RO可以正常输出接收到的数据。
      发送时的分析:,RXD_485为低电平,三极管Q1不导通,DE和RE为高电平。此时485处于发送模式。DI接GND,即DI=0,485将数据0发送出去。当RXD_485发送数据1的时候,485为接收模式,A,B为高阻态,但是外面有R9上拉(A=1),R6下拉(B=0),对于远端来说,会接收到A=1,B=0,即接收到差分数据1。
      (3)网口转TTL
      在这里插入图片描述采用网口直接转TTL芯片

      (4)USB转TTL
      在这里插入图片描述
      采用USB直接转TTL芯片

      (5)232转TTL
      在这里插入图片描述
      (6)如何实现无续切换开关、自动切换
      详见:

      详解.

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 7月25日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境