一. 简介

本文简单来学习一下,当串口通信出现问题时,如何使用示波器调试。

二. 如何用示波器调试 uart通信问题

使用示波器调试 UART 通信问题是最直接有效的方法之一,通过观察 TX(发送)和 RX(接收)线上的波形,可以直观定位波特率、数据格式、信号质量、接线等问题。以下是具体的调试步骤和分析方法:

(一)、调试前的准备

硬件连接

将示波器探头连接到 UART 总线上:

探头 “信号端” 接发送设备的 TX 引脚(或接收设备的 RX 引脚);

探头 “接地夹” 接系统共地(GND),确保参考电平一致。

若需对比发送和接收信号,可使用双踪示波器(两个探头分别接 TX 和 RX)。

示波器参数设置

        时基(Timebase):根据波特率计算 “位时间”(1 / 波特率),时基设置为位时间的 1/5~1/2,方便观察单个位的波形。

例:9600bps 的位时间≈104μs,时基可设为 20~50μs/div(一屏可显示 10~20 个位,足够观察一帧数据)。

注意:“位时间”(Bit Time)它指的是传输一个数据位(bit)所需要的时间

“时基”(Timebase)是示波器上的一个关键设置参数,它决定了示波器屏幕上水平方向每格(div)代表多长时间。

你可以把它理解为示波器的“时间尺子”——就像地图上的比例尺告诉你每厘米代表多少公里一样,时基告诉你屏幕上的每一格在时间上有多“宽”

 举个例子:假设你设置时基为:

  • 10 μs/div:表示屏幕水平方向每格代表 10 微秒。
  • 如果屏幕有 10 格,那么整个屏幕显示的时间跨度就是 10 × 10 μs = 100 μs。

        电压量程(Vertical Scale):UART 信号通常为 3.3V 或 5V,量程设为 1V/div 或 2V/div,确保波形完整显示(高电平不超出屏幕,低电平清晰可见)。

        触发方式:设置为 “边沿触发”,触发源选择接 TX/RX 的通道,触发边沿为 “下降沿”(UART 起始位为低电平,下降沿是一帧数据的开始)。

(二)、核心调试步骤与波形分析

步骤 1:确认是否有有效信号输出

        1. 观察现象:发送设备(如单片机、模块)发送数据时,示波器是否有连续的高低电平跳变?

        2. 无信号:可能是发送设备未正常工作(如未初始化 UART、引脚配置错误)、TX 引脚损坏,或线路断路。

        3. 有信号:继续分析波形细节。

步骤 2:验证波特率是否正确

UART 的波特率由 “位时间”(每个数据位的持续时间)决定,计算公式:

位时间 = 1 / 波特率(如 9600bps 的位时间≈104μs,115200bps≈8.68μs)。

      1.  调试方法:找到一帧数据中连续的高电平或低电平段(如停止位为高电平,可测量其持续时间);用示波器的 “测量工具”(Time Measurement)测量单个位的时间(从一个边沿到下一个同边沿的间隔);

计算实际波特率(1 / 位时间),与理论值对比(允许 ±3% 以内的偏差,否则会导致乱码)。

      2.  异常情况:实际位时间远大于理论值(如理论 104μs,实际 208μs)→ 波特率仅为理论值的一半,可能是发送方配置错误。

步骤 3:检查数据格式是否匹配(数据位、停止位、校验位)

UART 一帧数据的结构为:起始位(1 位低电平)→ 数据位(5~8 位)→ 校验位(0 或 1 位)→ 停止位(1~2 位高电平)。通过波形可直观拆解:

       1. 数据位验证:观察起始位(低电平)之后、校验位 / 停止位之前的有效位数量。

例:若配置为 8 位数据位,起始位后应连续出现 8 个高低电平(代表数据 0/1),多 1 位或少 1 位均为格式错误。

       2. 停止位验证:数据位 / 校验位之后的高电平数量即为停止位。

例:配置 1 位停止位,则数据位后应有 1 位高电平;若实际出现 2 位,说明发送方停止位配置错误。

      3.  校验位验证:若启用校验位(奇 / 偶),数据位与校验位的总 “1” 的个数应符合规则(偶校验为偶数,奇校验为奇数)。

例:数据位为 “10010110”(含 4 个 1,偶数),偶校验位应为 “0”(总 1 的个数保持偶数),若波形中校验位为 “1”,则校验方式不匹配或传输错误。

步骤 4:分析信号质量(判断干扰、硬件问题)

即使波特率和格式正确,信号质量差也会导致乱码,需重点观察以下特征:

       1. 高低电平是否达标

3.3V UART:高电平应≥2.0V(典型 3.3V),低电平应≤0.8V(典型 0V);

5V UART:高电平应≥3.0V(典型 5V),低电平应≤1.0V。

若高电平低于阈值(如仅 1.5V)→ 可能是线路阻抗过大、发送端驱动能力不足,或电源电压异常。

       2. 波形是否畸变

        过冲 / 欠冲:信号跳变时出现超出高 / 低电平范围的尖峰(如 3.3V 信号跳变时出现 5V 尖峰)→ 可能是线路未端接、线缆过长,或附近有强干扰(如电机、继电器)。

        上升沿 / 下降沿过缓:信号从低到高(或高到低)的过渡时间过长(超过位时间的 1/10)→ 可能是线路电容过大(线缆过粗、过长),或发送端输出阻抗过高。

        3. 是否有噪声干扰

波形上出现随机的小毛刺、抖动(如高电平中突然出现短暂低电平)→ 可能是未接地、线缆未屏蔽,或附近有电磁干扰源(如变频器、射频设备)。

步骤 5:验证接线与双向通信是否正常

        1. 单向通信检查:发送方发送固定数据(如 “0x55”,二进制 “01010101”,波形应为交替高低电平),观察接收方 RX 引脚的波形是否与发送方 TX 完全一致(允许微小延迟)。

若 RX 无波形→ 可能是 TX/RX 接线反接(TX 接 TX、RX 接 RX),或线路断路。

若 RX 波形与 TX 完全不同→ 可能是共地未接(双方参考电平不一致),或接收端硬件故障。

        2. 双向通信检查:用双踪示波器同时观察 TX 和 RX,发送方发送数据后,接收方应回复预期数据(如协议规定的应答),若回复波形异常(如乱码、无应答),则需排查接收方的处理逻辑。

三、为什么说“时基设为位时间的 1/5 ~ 1/2”更好?

在调试 UART 通信时,你想清楚地看到每一个数据位(bit)的波形,比如起始位、数据位、停止位。

  • 位时间 = 1 / 波特率
    比如波特率 9600 → 位时间 ≈ 104 μs

  • 如果你把时基设为 20 μs/div(大约是 104 μs 的 1/5):

    • 一个 bit 的宽度会占据约 5 格(104 ÷ 20 ≈ 5.2)
    • 这样你就能清晰地看到这个 bit 的电平是否稳定、边沿是否陡峭、有没有噪声。
  • 如果时基太大(如 100 μs/div),一个 bit 几乎只占一格,细节看不清;

  • 如果时基太小(如 2 μs/div),一个 bit 会拉得很长,浪费屏幕空间,看不到完整一帧。

常见问题与波形对应关系:

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐