1、调试前的准备:认识万用表、示波器、逻辑分析仪,搭建最小调试环境
做嵌入式硬件调试这么多年,我最大的体会是:调试不是靠运气,而是靠工具和方法的组合。很多新手拿到板子不亮,第一反应是「再焊一块」,其实你手边的万用表就能告诉你答案。
这一章,咱们把三件套——万用表、示波器、逻辑分析仪——挨个捋一遍。不扯理论,只说实战中怎么用。
1.1 万用表:最基础的「听诊器」
万用表这东西,说白了就是测电压、电流、电阻。但很多人只会用蜂鸣档测通断,太浪费了。
核心用法(我个人的三板斧):
- 测电源对地阻抗:上电前,先测VCC和GND之间的电阻。如果只有几欧姆,别上电,先查短路。我在项目中遇到过,新板子一上电就冒烟,就是因为没做这一步。
- 测电压跌落:芯片不工作,先量供电引脚电压。如果标称3.3V,实测只有2.8V,那八成是电源带不动负载。
- 二极管档测管脚:怀疑某个IO口烧了?用二极管档测对地压降。正常IO口对地压降在0.4V~0.7V之间,如果测出来是0V或者开路,那这个引脚大概率已经挂了。
小技巧: 测电阻时,手不要同时捏住两个表笔的金属头。人体电阻大概几百千欧,会严重干扰测量结果。嗯,我刚开始干的时候也犯过这个错。
1.2 示波器:看见「看不见的信号」
示波器是硬件工程师的眼睛。万用表只能告诉你「有没有电」,示波器能告诉你「电是怎么变化的」。
调试中最常用的几个场景:
- 看电源纹波:AC耦合,20MHz带宽限制,探头打到10×档。如果纹波超过50mV,MCU可能会随机复位。我曾经被一个100mV的纹波坑了整整两天,后来发现是去耦电容离芯片太远了。
- 看时钟波形:晶振不起振?用示波器探头点一下晶振引脚。正常波形是漂亮的正弦波,峰峰值在1V以上。如果波形是平的或者只有几百毫伏,查晶振负载电容和MCU配置。
- 看通信波形:I2C、SPI、UART,这些协议好不好使,看波形最直观。比如I2C的SCL和SDA,上升沿太缓(超过1μs),说明上拉电阻太大了。
注意: 示波器的地线夹子一定要夹在板子的GND上,而且越近越好。地线夹子本身就是一个天线,夹得太远会把噪声引入测量结果。你想想看,测出来的纹波到底是板子本身的,还是你探头引入的?
1.3 逻辑分析仪:调试数字协议的「翻译官」
示波器看模拟信号,逻辑分析仪看数字信号。说白了,它只关心高电平还是低电平,不关心具体电压是多少。
什么时候该用逻辑分析仪?
- 调试I2C、SPI、UART等协议:示波器只能看一两根线,逻辑分析仪可以同时看8根、16根甚至更多。而且它能自动解码,直接告诉你「地址是0x50,数据是0xA5」。
- 分析时序问题:比如某个引脚应该在10μs后拉高,实际却等了20μs。逻辑分析仪可以精确到纳秒级,一眼就能看出问题。
- 抓取偶发故障:设置一个触发条件,比如「当CS引脚拉低时开始捕获」。然后让板子跑着,等故障复现。逻辑分析仪会自动把故障前后的波形记录下来。
我的习惯: 调试新板子时,我会先把MCU的UART TX引脚接到逻辑分析仪上。这样只要MCU跑起来了,我就能看到串口数据。如果连串口数据都没有,那说明MCU压根没启动——省得在软件上浪费时间。
1.4 搭建最小调试环境
工具都认识了,接下来就是搭环境。一个最小调试环境,其实不需要多复杂:
| 工具/设备 | 推荐型号(个人经验) | 备注 |
|---|---|---|
| 万用表 | Fluke 15B+ 或 优利德 UT61E | 自动量程,带真有效值 |
| 示波器 | Rigol DS1054Z 或 普源 MSO5000系列 | 4通道,100MHz带宽起步 |
| 逻辑分析仪 | Saleae Logic 8 或 国产梦源 | 8通道以上,采样率100MHz |
| 可调电源 | 固纬 GPD-3303S | 带限流功能,防止烧板 |
| 杜邦线/探头 | 硅胶线,带钩子 | 钩子探头比尖头好用十倍 |
搭建步骤其实很简单:
- 上电前检查:万用表测电源对地阻抗,确认没有短路。
- 上电后测电压:确认各供电节点电压正常。
- 看时钟:示波器点晶振,确认MCU有时钟。
- 看复位:示波器看复位引脚,确认不是一直处于复位状态。
- 看启动:逻辑分析仪抓UART TX,确认MCU在跑代码。
避坑指南: 我曾经遇到过一块板子,上电后电流正常,时钟正常,复位正常,但就是没串口输出。折腾了半天,最后发现是MCU的BOOT引脚电平不对,芯片压根没从Flash启动。从那以后,我每次调试新板子,第一件事就是确认BOOT引脚的电平。
好了,工具和环境都准备好了。下一章咱们开始实战——怎么用万用表快速定位短路和虚焊。这些东西看着简单,但真到了现场,能帮你省下大把时间。