USB转串口那些事儿-串口调试常见问题和排查方法

这篇具有很好参考价值的文章主要介绍了USB转串口那些事儿-串口调试常见问题和排查方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

串口UART作为嵌入式应用和通讯领域中最常用的接口之一,接口协议虽然简单,但在实际应用中不同设备之间的通讯也会存在各种小问题,下面对使用中各种常见的问题做下总结和梳理,可作为调试参考。串口可分为异步串口(UART)和同步串口(USART),后者多出时钟信号线用作通讯时信号同步。本偏仅介绍异步串口。

一、串口通信常见问题

串口通信乱码

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

  • 双方设定的串口参数是否匹配,需检查设置的:串口波特率、串口数据格式等参数。
  • 串口通讯电压不匹配,不同的串口设备接收可正常进行解码的高低电平门限不同,如同样是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软件编码问题或计算机端软件工作异常

二、常用的排查小技巧

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

使用硬件仪器

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

串口Loopback检测

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

更换串口调试软件

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

三、串口通信基础

当两个设备使用UART进行通信时,它们至少通过三根导线连接:TXD串口发送、RXD串口接收、GND。串口设备通过改变TXD信号线上的电压来发送数据,接收端通过检测RXD线上的电压来读取数据。

什么是串口通信

计算机一次传输信息(数据)一位或多个比特位。串行是指传输数据一次只传输一位。当进行串口通信时发送或者接收的每个字(即字节或字符)一次发送一位。每一位都是逻辑‘1’或者‘0’。也用Mark表示逻辑1,Space表示逻辑0。

串口数据速率使用 bits-per-second ("bps") 或者 baud rate ("baud")。这表示一秒内可以传输多少逻辑1和0。当波特率超过 1000,你会经常看到用Kbps表示的速率。对于超过 1000000 的速率一般用Mbps 来表示。

TTL串口

实际应用中,使用TTL电平逐渐成为趋势,在MCU与串口转接芯片提供的串口中比较常见,此时逻辑1电压值:+5V或+3.3V等,逻辑0电压值:0V(逻辑地)。

RS-232串口

RS-232 是由 EIA 定义的用于串口通信的标准电气接口。RS-232 实际上有三种不同的类型(A,B和C),每一种对于逻辑1和逻辑0,电平定义了不同的电压范围。最常用的种类是 RS-232C,它定义逻辑1电压范围:-3V~-12V 和逻辑0电压范围:+3V~+12V。

下面列举最为常见的 DB-9 接口分布图,引脚和功能描述如下所示:

                                                                        串口调试助手接收不到数据什么原因,USB转串口,单片机,嵌入式硬件,串口通讯,串口调试

其他还有RS-422以及 RS-485 串口标准。RS-422 使用更低电压与差分信号允许线缆长达 1000英尺(300m)。

常用串口信号定义

GND - 逻辑地

从技术上讲,逻辑接地不是信号,但没有它,其他信号就不能工作。从根本上说,逻辑地充当一个参考电压,从而知道哪些电压为正或负。

TXD - 发送数据

RXD - 接收数据

RTS - 请求发送

RTS设置为逻辑0电平表示己方准备好接收数据。一般与CTS一起用于串口流控,通常被设置为默认有效状态。

除流控功能外,RTS也可用作通用输出信号,输出高低电平。常用于单片机复位或串口下载电路。

CTS - 清除发送

CTS信号接收自串口线缆的另一端。信号线逻辑0电平表示己方可以发送数据。一般与RTS一起用于串口数据流控。

DTR - 数据终端就绪

DTR 信号用于通知对端计算机或设备己方已就绪(逻辑0电平)或未就绪(逻辑1电平)。DTR也可用作通用输出信号,输出高低电平。常用于单片机复位或串口下载电路。

串口波特率

波特率是指串口每秒钟传输的bit总数,如:9600波特率。表示1s传输9600个比特。1个比特所需时间为:1/9600 ≈ 0.104ms

串口调试助手接收不到数据什么原因,USB转串口,单片机,嵌入式硬件,串口通讯,串口调试

串口异步通信

解析串口数据需要确定一个字符的结束与下一个字符的开始。

串口数据线空闲时保持在逻辑1状态直到有字符发送。每个字节起始位在前,字节的每一位紧随其后,一位可选校验位以及一位或者两位停止位。起始位始终是逻辑0,通知对方有新串口数据可用。数据可以同时发送和接收,因此称为“异步”。

串口调试助手接收不到数据什么原因,USB转串口,单片机,嵌入式硬件,串口通讯,串口调试

偶校验:数据位加上校验位中的“1”的个数保持为偶数。

奇校验:数据位加上校验位中的“1”的个数保持为奇数。

空白校验:也称Space校验,校验位永远是0。

标志校验:也称Mark校验,校验位永远是1。

无校验:没有校验位存在或被传输。

剩下的位称作停止位。在字符之间可能会有 1,1.5 或者 2 位停止位并且这些位总为 1。异步数据格式通常表达成“8N1”,“7E1”等。

什么是全双工和半双工

全双工是指设备可以同时发送和接收数据,有两个独立数据通道(一路输入,一路输出)。

半双工是指设备不能同时发送和接收数据,这通常意味着只有一路可以通讯,如RS485串口。

串口流控

在两个串口设备间传输数据时经常有必要进行数据流控。这可能是受到中间串口通信线路、其中一个设备或者其他存储介质的限制。异步数据流控通常使用的有两种方法。

第一种方法通常称为“软件”流控,使用特殊字符开始(XON or DC1)或者停止(XOFF or DC3)数据流。这些字符定义参见 ASCII 码表。这些码值在传输文本信息时很有用,但不能在未经特殊编程时用于传输其他类型的信息。

第二种方法称作“硬件”流控,使用RTS和CTS信号线取代特殊字符。当接收方准备好接收数据时会将RTS置为逻辑0以请求对方发送数据,当未准备好时置为逻辑1,因此发送方会通过检测 CTS 电平状态判断是否可以发送数据。

使用硬件流控至少需要连接的信号线有GND、RXD、TXD、RTS、CTS。

使用软件流控只需要GND、RXD、TXD。

Break信号

通常情况下收发数据信号线保持在逻辑1状态直到传输一个新字节。如果信号拉低至逻辑0一段时间(各平台定义不同,通常是 1/4 到 1/2 秒)那么就说一个 break 条件满足。一个break信号有时用于复位通讯或者改变通讯硬件的操作模式,如MODEM。

———————————————————————————————————————————

以上为串口使用经常遇到的问题和调试技巧,欢迎工程师讨论补充~文章来源地址https://www.toymoban.com/news/detail-529127.html

到了这里,关于USB转串口那些事儿-串口调试常见问题和排查方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL运维实战(3.2) 常见数据库连接失败问题排查

    作者:俊达 我们经常会遇到一些数据库连接失败或访问报错的问题。收集并分析具体的报错信息,可以帮助我们迅速定位问题。 1、客户端到服务端的网络是否畅通,服务端端口是否能连通。 使用ping、telnet等工具探测服务端的端口是否能访问。 如果端口不通,要先排除网络

    2024年01月21日
    浏览(64)
  • LiveGBS流媒体平台GB/T28181常见问题-海康大华宇视硬件NVR摄像头通道0未获取到视频通道如何排查如何抓包分析

    硬件NVR如何配置接入到LiveGBS,海康的硬件NVR接入示例,按红色文字提示配置相关接入,其它参见:作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备 问题:NVR接入国标服务后通道显示为0 2.1.1、点击更新通道 国标设备列表-》更新通道,点击

    2024年02月08日
    浏览(51)
  • LiveGBS流媒体平台GB/T28181常见问题-无法注册不上海康NVR摄像机自带物联网卡摄像头注册GB/T28181国标平台看不到设备的时候如何抓包及排查

    询问厂家是否要设置定向IP,自带物联网卡的设备,网络需要定向IP 海康部分设备萤石云和GB28181不能同时开启,关闭设备的萤石云注册,单独启用GB28181注册。 系统自身的防火墙是否开启,开启后可以尝试关闭试试。如果服务器外面还有物理防火墙,系统本身的防火墙可以关

    2024年02月14日
    浏览(54)
  • 树莓派485转USB串口调试教程

    步骤1:接线方式:485转USB 注意接线口是否对应:A1B1 步骤2:查看串口配置—映射关系是否正确 serial0即GPIO映射的串口,默认是ttyS0,即mini串口 serial1即板载蓝牙映射的串口,默认是ttyAMA0,即硬件串口 在开启串口通讯不做任何设置的时候,默认的串口通讯使用的是“mini串口”

    2024年02月06日
    浏览(67)
  • 调试STM32F4 USB3300 USB_HS虚拟串口

    参考了csdn上面的几篇文章,经历了一个多小时的调试排除找bug,终于成功了! 通过STM32cubeMx配置USB phy芯片 1. 2. 3. 4. 5.生成代码出来,打开工程,编译下载通过。 在上电之前,电脑得先安装ST的USB 虚拟串口驱动 点击前往下载--STSW-STM32102 - STM32虚拟COM端口驱动程序 - STMicroelect

    2024年02月02日
    浏览(72)
  • Flutter:如何在Android中实现USB转串口通信调试

            本文介绍如何通过flutter_usb_serial插件在Flutter中实现USB转串口通信调试。 1、引入依赖         在flutter工程的pubspec.yaml文件中引入flutter_usb_serial依赖: 2、导入import依赖包         在dart代码中import导入usb_serial/usb_serial.dart就可以使用了。 3、读取所有USB口设备    

    2024年02月14日
    浏览(39)
  • RabbitMQ常见问题以及实际问题解决

    ** ** 消息可靠性问题: 消息从生产者发送到Exchange,再到queue,再到消费者,有哪些导致消息丢失的可能性? 发送时丢失: - 生产者发送的消息为送达exchange - 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 consumer接收到消息后未消费就宕机 ①生产者消息确认 RabbitMQ提供

    2024年02月16日
    浏览(49)
  • Java开发中的常见问题和解决方法:如何解决常见的性能和bug问题

      在Java开发中,我们经常会面临各种各样的问题,包括性能问题和Bug。这些问题可能会导致应用程序的运行变慢、不稳定甚至崩溃。本文将介绍一些常见的Java开发问题,并提供解决这些问题的方法和技巧,帮助开发人员更好地处理性能和Bug问题。 性能问题是Java开发中最常见

    2024年02月09日
    浏览(55)
  • SAP 常见问题大全及问题解决大全

    1.A:在公司代码分配折旧表时报错?     在公司代码分配折旧表时报错,提示是“3000 的公司代码分录不完全-参见长文本”  希望各位大侠帮我看看。 3000 的公司代码分录不完全-参见长文本  R: a.你把零进项税的代码分配给这个公司代码就可以了 .没有指定非税代码,OBCL   

    2024年02月06日
    浏览(46)
  • Git常见问题与使用实际问题记录。

    git stash 是 Git 版本控制系统提供的一个命令,用于临时保存当前工作目录的修改。当您在进行代码开发时,可能会遇到需要暂时切换到其他分支或处理其他任务的情况,但又不想提交当前的修改。这时,您可以使用 git stash 命令来保存这些修改,以便稍后恢复并继续工作。

    2024年02月04日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包