第2章:硬件调试基础——从万用表到逻辑分析仪
硬件调试,说白了就是跟电路板“对话”。你得听懂它在说什么,它哪里不舒服。我做了十几年嵌入式,最深的体会就是:工具用得顺手,问题解决快一半。这一章,咱们就把几个最常用的硬件调试工具捋一遍。
本章核心:掌握万用表、示波器、逻辑分析仪的基本操作,学会测量电源纹波。这些是排查硬件故障的“听诊器”和“X光机”。
2.1 万用表使用技巧——不只是测通断
很多新手觉得万用表就是测个电压、量个电阻。其实不然。我习惯把万用表当成“第一道防线”。板子拿来,先别上电,用万用表扫一遍电源对地阻抗,能避免很多烧板子的悲剧。
2.1.1 上电前的“三测”
我个人习惯,拿到一块新板子,上电前必须做三件事:
- 测电源对地阻抗:用电阻档(200Ω或2kΩ档),红表笔接电源,黑表笔接地。正常值应该在几百Ω以上。如果接近0Ω,别上电,先查短路。
- 测关键引脚对地:比如复位引脚、BOOT引脚。确保没有意外短路。
- 测电源电压:上电后,用直流电压档测3.3V、5V等关键节点。偏差超过5%就要警惕。
小技巧:测电压时,我习惯用“相对测量”功能。先把表笔短接,按REL键归零,再测。这样能消除表笔内阻和接触电阻的影响,尤其测小电阻时特别有用。
2.1.2 二极管档的妙用
万用表的二极管档,不只是测二极管。我经常用它来:
- 判断MOS管好坏:测G-S、G-D之间的PN结正向压降,正常在0.4V~0.7V之间。
- 查找短路点:如果电源对地短路,用二极管档测,蜂鸣器响的那个点就是短路点附近。
- 判断芯片是否损坏:测芯片电源引脚对地的二极管特性,如果正反向都导通或都不通,芯片大概率挂了。
注意:千万不要在板子通电的情况下用电阻档或二极管档!万用表内部电池的电压可能会烧坏电路。我见过有人带电测电阻,直接把一个BGA芯片干废了。
2.2 示波器基础操作——看见信号的样子
万用表只能告诉你“有没有电”,示波器能告诉你“电长什么样”。对于STM32调试来说,示波器是排查时序问题、信号完整性问题的主力工具。
2.2.1 探头补偿——很多人忽略的第一步
拿到示波器,第一件事不是接信号,而是做探头补偿。我记得刚入行时,有次测一个SPI时钟,波形怎么看怎么不对,折腾了半天才发现是探头没补偿好。
操作很简单:把探头接到示波器自带的1kHz方波输出端,用非金属螺丝刀调节探头上的微调电容,直到屏幕上的方波变得“方正”,没有过冲或圆角。
| 波形形状 | 问题 | 解决方法 |
|---|---|---|
| 方波顶部上翘(过冲) | 补偿过度 | 逆时针微调电容 |
| 方波顶部圆角(欠冲) | 补偿不足 | 顺时针微调电容 |
| 方波顶部平直 | 补偿正确 | 不用调 |
2.2.2 触发设置——让波形“站住”
示波器最让人头疼的就是波形乱跳。其实只要触发设对了,波形就能稳定。我一般这样设:
- 触发源:选你要看的那个信号通道。
- 触发类型:测数字信号用“边沿触发”,测模拟信号用“脉宽触发”或“视频触发”。
- 触发电平:调到信号幅度的中间位置。比如3.3V的方波,触发电平设在1.65V左右。
- 触发模式:正常模式(Normal)用于看特定事件,自动模式(Auto)用于看连续信号。
实战经验:测STM32的SPI或I2C时,我习惯把触发源设成时钟信号,触发电平设在1.65V,然后调时间档位到能看到一个完整的数据帧。这样波形基本不会跑。
2.3 逻辑分析仪入门——数字信号的“照妖镜”
示波器看模拟细节,逻辑分析仪看数字时序。对于STM32这种数字芯片,逻辑分析仪比示波器更适合分析协议时序。我建议每个做嵌入式的人都备一个便宜的24通道逻辑分析仪,几十块钱,但能省你几天时间。
2.3.1 采样率与存储深度
这两个参数决定了你能看到什么:
- 采样率:至少要大于信号最高频率的4倍。测SPI(几十MHz)需要100MHz以上的采样率。
- 存储深度:决定了你能连续采集多长时间的数据。测I2C这种慢速协议,存储深度要够大,不然只能看到一帧。
| 信号类型 | 推荐采样率 | 推荐存储深度 |
|---|---|---|
| UART (115200bps) | ≥1MHz | ≥1Mpts |
| I2C (400kHz) | ≥4MHz | ≥2Mpts |
| SPI (18MHz) | ≥100MHz | ≥4Mpts |
| PWM (1kHz) | ≥10MHz | ≥512kpts |
2.3.2 协议解码——让数据说话
逻辑分析仪最强大的功能就是协议解码。我曾经排查过一个I2C通信故障,示波器看了半天没看出问题,用逻辑分析仪一解码,发现是从设备地址错了1个bit。
操作步骤:
- 把信号线接到逻辑分析仪的通道上(注意共地)。
- 在软件里设置对应的协议(UART/I2C/SPI等)。
- 设置正确的波特率或时钟频率。
- 点击采集,看解码结果。
避坑指南:我曾经遇到过逻辑分析仪解码出来的数据全是乱码,折腾了半天才发现是地线没接好。记住:逻辑分析仪的地线必须和被测板子共地,否则信号全是浮空的。
2.4 电源纹波测量——给电源“体检”
STM32对电源质量要求不低。纹波太大,轻则ADC采样不准,重则系统死机。我见过一个项目,设备偶尔重启,查了两个月,最后发现是电源纹波超标。
2.4.1 测量方法
测纹波不能用普通探头直接怼,那样会引入噪声。正确做法:
- 用同轴电缆或BNC转接头:直接焊在电源输出端,减少环路面积。
- 示波器设置:AC耦合,20MHz带宽限制,垂直档位调到10mV/div或更小。
- 测量位置:在负载端测,不要在电源模块输出端测。负载端的纹波才是芯片实际看到的。
2.4.2 纹波指标
对于STM32F103,电源纹波一般要求:
- 3.3V数字电源:纹波峰峰值 ≤ 50mV
- 3.3V模拟电源(VDDA):纹波峰峰值 ≤ 10mV
- 1.8V内核电源(如果外部供电):纹波峰峰值 ≤ 30mV
我的习惯:测纹波时,我会在示波器上打开“测量”功能,直接看峰峰值和有效值。如果峰峰值超过指标,我会先检查输出电容是否虚焊,再考虑换LDO或加磁珠。
2.5 本章知识体系
下面这张图总结了本章的核心内容,帮你快速建立硬件调试的知识框架:
这张图把四个工具的关系和各自的核心应用场景串起来了。你想想看,排查问题时按这个顺序走,基本不会漏掉什么。