1. 硬件调试基础:认识万用表、示波器、逻辑分析仪,搭建最小调试环境

做嵌入式硬件调试,说白了就是跟三个工具打交道:万用表、示波器、逻辑分析仪。我见过不少新手,上来就拿着示波器到处戳,结果连电源都没通——这不是调试,这是碰运气。

这一章,咱们先把这三样家伙摸透。不扯虚的,直接说怎么用、什么时候用、用的时候要注意什么。

1.1 万用表:最基础的“听诊器”

万用表是硬件工程师的听诊器。我习惯在焊接完一块板子后,先不急着上电,用万用表量一遍电源和地之间有没有短路。这一步能救你很多次。

功能 典型场景 我的习惯
电压测量 检查STM32的3.3V、VREF、VBAT 先测空载,再测带载
电阻测量 检查上拉/下拉电阻、排阻是否虚焊 用蜂鸣档先快速扫一遍
通断测试 检查飞线、焊点、排针连接 蜂鸣档响得干脆才算通
二极管测试 检查保护二极管、TVS管方向 正向压降0.6V左右正常
小技巧: 测电压时,红表笔接正极,黑表笔接GND。我见过有人把表笔接反了,测出负电压还以为是板子坏了——其实只是表笔拿反了。

1.2 示波器:看波形的眼睛

示波器能让你看到电信号随时间变化的轨迹。调试STM32的I2C、SPI、UART时,示波器是首选。为什么?因为你能看到信号质量——上升沿缓不缓、有没有毛刺、电平对不对。

我记得有一次调试一个NB-IoT模块,通信老是断。用示波器一看,UART的TX脚上有个100mV的毛刺,每次毛刺出现,模块就丢一包数据。加了个10pF电容到地,问题解决。

核心参数:
  • 带宽: 至少50MHz,建议100MHz。STM32的HSE时钟8MHz,100MHz带宽足够看清楚。
  • 采样率: 至少1GSa/s。采样率不够,波形会失真。
  • 通道数: 2通道够用,4通道更爽。调试I2C时,2通道刚好抓SCL和SDA。

1.3 逻辑分析仪:抓协议的神器

示波器看模拟信号,逻辑分析仪看数字信号。说白了,逻辑分析仪只关心高电平还是低电平,不关心电压具体是多少。调试SPI、I2C、UART这类数字协议时,逻辑分析仪比示波器好用得多。

为什么?因为逻辑分析仪有协议解码功能。你抓一段I2C波形,它能直接告诉你:起始位、设备地址、读写位、ACK/NACK、数据字节。示波器你得自己数格子,累不累?

对比项 示波器 逻辑分析仪
信号类型 模拟 + 数字 纯数字
通道数 2~4 8~32
协议解码 部分支持 原生支持
价格 贵(千元起步) 便宜(百元级)
适用场景 信号质量、时序精度 协议分析、多通道抓包
注意: 逻辑分析仪不能替代示波器。如果你怀疑信号有毛刺或电平异常,必须用示波器看。逻辑分析仪只能告诉你“有没有信号”,不能告诉你“信号好不好”。

1.4 搭建最小调试环境

一个靠谱的调试环境,能让你少走很多弯路。我自己的工位上,常年摆着这几样东西:

  1. 可调电源: 至少双路输出,一路给STM32供电(3.3V),一路给外设供电(5V或12V)。带电流显示的最好。
  2. 万用表: 福禄克17B+或者优利德UT61E,够用。别买十几块钱的,测不准等于没测。
  3. 示波器: 普源DS1102Z-E或者鼎阳SDS1102X-C,100MHz带宽,1GSa/s采样率,入门够用。
  4. 逻辑分析仪: Saleae Logic 8或者国产的梦源、金沙滩。24MHz采样率,8通道,够用。
  5. 杜邦线、探钩、夹子: 多备几种。探钩比探针好用,夹子比手按着稳。
  6. USB转串口模块: CH340或者FT232,调试STM32的串口打印必备。
我的建议: 别在工具上省钱。一把好用的万用表能用十年,一台靠谱的示波器能陪你度过无数个调不通的夜晚。我曾经为了省200块钱买了个杂牌逻辑分析仪,结果采样率虚标,抓I2C老是丢数据——后来还是换了Saleae。

1.5 知识体系总览

下面这张图,把本章的核心内容串起来了。你可以把它当作调试时的“作战地图”。

硬件调试基础 · 知识体系 硬件调试基础 万用表 示波器 逻辑分析仪 电压/电阻/通断 二极管/电容 波形/时序/毛刺 协议解码 多通道抓包 最小调试环境:电源 + 万用表 + 示波器 + 逻辑分析仪 核心原则:先测电源 → 再测信号 → 最后抓协议。顺序别搞反。

1.6 避坑指南

最后,分享几个我踩过的坑:

  • 不要用万用表测高频信号。 万用表的频率响应很有限,测PWM波或者时钟信号,读数完全不靠谱。用示波器。
  • 示波器探头要补偿。 每次换探头或者换通道,先接上探头自带的1kHz方波校准信号,调好补偿电容。不然测出来的波形上升沿是歪的。
  • 逻辑分析仪的接地要接好。 不接地或者接地不良,抓出来的数据全是乱码。我遇到过好几次,折腾半天发现是夹子松了。
  • 调试环境要固定。 别今天用这个电源,明天换那个。不同电源的纹波、噪声不一样,换了环境问题可能就复现不了。
曾经有一次: 我调试一个LoRa模块,通信距离死活达不到标称值。折腾了两天,最后发现是示波器探头的地线夹子没夹好,引入了一大堆噪声。把夹子换成弹簧地线,问题立刻消失。从那以后,我调试高频信号时,一律用弹簧地线。