当前位置: 首页 > news >正文

串口调试可能遇见的常见问题和排查方法

串口UART作为嵌入式应用和通讯领域中最常用的接口之一,接口协议虽然简单,但在实际应

用中不同设备之间的通讯也会存在各种小问题,下面对使用中各种常见的问题做下总结和梳

理,可作为调试参考。

01串口通信常见问题

串口通信乱码

串口通讯乱码通常是指接收方接收到的数据不符合预期,出现此情况时需要考虑的因素通常包含以下几个方面:
-双方设定的串口参数是否匹配

需检查设置的:串口波特率、串口数据格式等参数。

-串口通讯电压不匹配

不同的串口设备接收可正常进行解码的高低电平门限不同,如同样是3.3V串口通讯,A设备低电平门限1.5V,B设备低电平门限1V。当实际串口电压低电平只有1.5V时,B设备无法正常接收数据。又如:A设备为5V串口,B设备为3.3V串口,同样有电压不匹配的问题。

-串口通讯实际工作波特率误差较大

即:串口工作实际波特率和理论值偏差较大,因一些MCU和串口设备所用时钟为了兼顾其他资源和应用需要,实际工作的串口速率和设定会有偏差。比如:标称为9600bps时,实际工作在了10000bps(误差超过4%),此时可能已经超出接收方的设计标准。

-串口通讯信号质量差

如通讯时信号上升下降抖动严重,信号有过冲或者变化比较迟缓,此时检查硬件上共地是否良好,以及线路上有无串接/并联其他器件导致。

-数据格式显示问题

通常使用十六进制或ASCII码格式居多,使用时需要区分。

串口无法发送

串口无法发送通常是指与此串口的TXD连接的对端设备RXD通道接收不到任何数据,总结如下:

-使用仪器对TXD通道进行实际测量

观察硬件波形,确定信号是否有输出以及是否正常。(串口电压、串口信号上升下降时间)

-短接设备的TXD和RXD通道回环测试

看自收发是否可以成功。排除是自身设备异常还是对端异常。

-确定应用软件是否打开串口硬件流控

如当启用RTS/CTS硬件流控后但实际该引脚并没有连接或连接但不生效时,按照协议规定,CTS输入无效则发送方暂停发送数据。

-MCU软件编码问题或计算机端软件工作异常

串口无法接收

当串口接收不到任何数据的原因通常如下:
对端串口实际未能成功发送数据
串口发送有效电压不满足芯片接收解码要求
MCU软件编码问题或计算机端软件工作异常

02常用的排查小技巧

对于以上的常见串口调试问题,有以下几个方法和技巧可供参考使用:

使用硬件仪器

善于使用示波器等硬件采集或分析工具查找问题,用此方法可以确定线路上信号的串口电压、串口数据格式、串口通信波特率等参数。

串口Loopback检测

当手头没有硬件仪器时,将设备自身的TXD和RXD短接起来进行自收发测试也是一个不错的选择,此方式可以简单确认硬件通路和整个逻辑是否是打通的。但缺点是定位问题不够精准。

更换串口调试软件

计算机端串口软件种类较多,不排除一些设备或驱动软件没法成功适配所有的串口调试软件,此时可尝试多使用几款不同的软件对比测试。

03总结

当串口通信遇到问题的解决思路:

01确认信号类型,是TTL,RS485,RS232,不同数据类型的信号无法正常通信。

02确认串口的软件设置,波特率串口号等信号格式。

03确认已经正确安装驱动。

04确认硬件接线是否正确,对应的信号接口接到相应的接口,针对TTL和485,不确定信号定义的时候可以尝试俩根线相互调换。

05确认设备正常供电。

06使用示波器或者其他调试工具检查通信波形是否正确,5V系统和3.3V系统需要在对应的信号线上加上上拉电阻和二极管。

07确认硬件无问题的情况下,查找软件问题。

软件问题与硬件问题的大致区分方法:硬件问题基本每次都能复现,而软件问题可能时有时无。

选自苏州稳联科技

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Liunx 小程序之进度条
  • 急需一个加密软件,请问哪款安全性高且好用?
  • 数据要素流通交易的场景概述
  • Kubernets(k8s) 网络原理三:同主机内Pod相互访问
  • 安卓常用控件ListView
  • WSL介绍 安装 使用 高性能本地服务器【详细教程】
  • perl基础入门
  • 学习记录——day25 多线程编程 临界资源 临界区 竞态 线程的同步互斥机制(用于解决竟态)
  • 大数据技术复习--概述
  • 代码随想录算法训练营第二十四天| 455.分发饼干, 376. 摆动序列 , 53. 最大子序和
  • wps 最新 2019 专业版 下载安装教程,解锁全部功能,免费领取
  • 计算机网络-基于PIM-DM+IGMP的组播实验配置
  • ADAPT:动作感知驾驶字幕转换器
  • HTML-02.新浪新闻-标题-样式1
  • 技战法丨攻防演练防御——纵深、联动、诱捕(可搬运、可cv)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Android交互
  • Apache Pulsar 2.1 重磅发布
  • axios 和 cookie 的那些事
  • HTTP请求重发
  • learning koa2.x
  • React+TypeScript入门
  • tensorflow学习笔记3——MNIST应用篇
  • 大主子表关联的性能优化方法
  • 关于List、List?、ListObject的区别
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聚类分析——Kmeans
  • 如何合理的规划jvm性能调优
  • 数组的操作
  • 译米田引理
  • 赢得Docker挑战最佳实践
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 从如何停掉 Promise 链说起
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​虚拟化系列介绍(十)
  • #pragma once
  • #QT(TCP网络编程-服务端)
  • #大学#套接字
  • (1)Hilt的基本概念和使用
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (算法)N皇后问题
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET单元测试
  • .net快速开发框架源码分享