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 搭建最小调试环境
一个靠谱的调试环境,能让你少走很多弯路。我自己的工位上,常年摆着这几样东西:
- 可调电源: 至少双路输出,一路给STM32供电(3.3V),一路给外设供电(5V或12V)。带电流显示的最好。
- 万用表: 福禄克17B+或者优利德UT61E,够用。别买十几块钱的,测不准等于没测。
- 示波器: 普源DS1102Z-E或者鼎阳SDS1102X-C,100MHz带宽,1GSa/s采样率,入门够用。
- 逻辑分析仪: Saleae Logic 8或者国产的梦源、金沙滩。24MHz采样率,8通道,够用。
- 杜邦线、探钩、夹子: 多备几种。探钩比探针好用,夹子比手按着稳。
- USB转串口模块: CH340或者FT232,调试STM32的串口打印必备。
我的建议: 别在工具上省钱。一把好用的万用表能用十年,一台靠谱的示波器能陪你度过无数个调不通的夜晚。我曾经为了省200块钱买了个杂牌逻辑分析仪,结果采样率虚标,抓I2C老是丢数据——后来还是换了Saleae。
1.5 知识体系总览
下面这张图,把本章的核心内容串起来了。你可以把它当作调试时的“作战地图”。
1.6 避坑指南
最后,分享几个我踩过的坑:
- 不要用万用表测高频信号。 万用表的频率响应很有限,测PWM波或者时钟信号,读数完全不靠谱。用示波器。
- 示波器探头要补偿。 每次换探头或者换通道,先接上探头自带的1kHz方波校准信号,调好补偿电容。不然测出来的波形上升沿是歪的。
- 逻辑分析仪的接地要接好。 不接地或者接地不良,抓出来的数据全是乱码。我遇到过好几次,折腾半天发现是夹子松了。
- 调试环境要固定。 别今天用这个电源,明天换那个。不同电源的纹波、噪声不一样,换了环境问题可能就复现不了。
曾经有一次: 我调试一个LoRa模块,通信距离死活达不到标称值。折腾了两天,最后发现是示波器探头的地线夹子没夹好,引入了一大堆噪声。把夹子换成弹簧地线,问题立刻消失。从那以后,我调试高频信号时,一律用弹簧地线。