第2章 硬件调试基础:万用表与示波器使用、电源与时钟测量、复位电路检查、Boot模式配置
硬件调试,说白了就是给板子“把脉”。你写再多软件,硬件底子不行,一切白搭。我见过太多工程师拿着示波器不知道怎么下手,或者万用表只会测通断。这一章,咱们就把这些基本功练扎实。
2.1 万用表:最基础的“听诊器”
万用表这东西,看着简单,用好了能解决80%的硬件问题。我个人习惯,上电前必做三件事:
- 测短路:用蜂鸣档测电源对地,响就说明有短路。别急着上电,先查。
- 测电阻:特别是上拉/下拉电阻,焊错了会导致IO电平不对。
- 测二极管:检查保护二极管方向,焊反了会直接烧。
2.2 示波器:看波形的“眼睛”
示波器比万用表高级,但很多人只会看个大概。我建议你重点练三个场景:
2.2.1 电源纹波测量
测电源纹波时,探头要打到10×档,带宽限制打开(通常20MHz)。地线夹子要短,最好用地弹簧。为什么?因为长地线会引入噪声,你看到的纹波可能不是真实的。
2.2.2 时钟信号测量
测晶振波形时,探头电容会影响起振。我遇到过好几次,探头一搭上去,波形就没了。解决办法:用10×档,或者用有源探头。实在不行,测晶振输出脚(OSC_OUT)而不是输入脚(OSC_IN)。
2.2.3 复位信号测量
复位信号是低电平有效。上电时,NRST引脚应该先拉低再拉高。用示波器的单次触发模式,触发电平设在1.5V左右,就能抓到完整的复位波形。
2.3 电源与时钟测量实战
咱们拿STM32F103最小系统板举例,看看怎么测。
| 测量项 | 工具 | 正常值 | 异常排查 |
|---|---|---|---|
| VDD(3.3V) | 万用表 | 3.3V ± 0.1V | 检查LDO输出、滤波电容 |
| VDDA(模拟电源) | 万用表 | 3.3V ± 0.05V | 检查磁珠、去耦电容 |
| HSE(8MHz晶振) | 示波器 | 8MHz ± 1% | 检查晶振负载电容、起振条件 |
| LSI(40kHz内部RC) | 示波器 | 约40kHz | 精度差,正常现象 |
测HSE时,我习惯先测晶振两脚的直流电压。正常时,两脚电压应该在1.5V左右(VDD/2)。如果一脚是0V另一脚是3.3V,说明晶振没起振,或者芯片内部振荡器没使能。
2.4 复位电路检查
复位电路看着简单,就一个电阻一个电容。但问题往往出在这里。
- 上电复位时间:RC常数决定。R=10kΩ,C=100nF,时间常数τ=1ms。STM32要求复位低电平至少维持1μs,但实际设计中我们通常留10倍余量。
- 手动复位按钮:按下时拉低NRST,松开后电容充电,NRST上升。如果按钮有抖动,需要加施密特触发器或软件消抖。
- 外部看门狗复位:如果用了外部看门狗,NRST会被周期性拉低。这时候测复位波形,应该能看到规律的脉冲。
2.5 Boot模式配置
STM32的Boot模式,说白了就是决定芯片从哪里启动。三个选项:
| BOOT0 | BOOT1 | 启动区域 | 典型用途 |
|---|---|---|---|
| 0 | X | 主Flash | 正常运行 |
| 1 | 0 | 系统存储器(Bootloader) | 串口下载、固件升级 |
| 1 | 1 | SRAM | 调试、测试 |
调试时,我经常把BOOT0拉高,从系统存储器启动。这样可以用串口下载程序,即使Flash里的程序跑飞了也不怕。等程序调好了,再把BOOT0拉回低电平。
2.6 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你对照着看,心里就有谱了。
嗯,这一章的内容就这些。工具和方法都给你了,剩下的就是多练。下次拿到一块新板子,别急着写代码,先拿万用表和示波器走一遍流程。你会发现,很多问题在硬件阶段就能解决。