1. 课程导论与硬件准备:STM32 PWM与ADC基础概念、开发板选型、示波器与万用表准备
各位同学,欢迎来到这门实战课。我是你们的老朋友,一个在嵌入式这行摸爬滚打了十几年的工程师。
咱们这门课,不搞虚的。PWM 输出和 ADC 采集,是 STM32 最常用的两个外设。你想想看,控制电机、调节灯光、读取传感器、采集电压……哪个项目离得开它们?但很多新手甚至工作两三年的工程师,一碰到 PWM 频率不对、ADC 采样值跳变、信号有毛刺这种问题,就开始抓瞎。
这门课就是要把这些坑一个个填平。我会带着你从原理到实战,从正常调试到故障定位,把每个环节都走一遍。今天这第一讲,咱们先把地基打牢。
1.1 PWM 与 ADC 到底是个啥?
先说 PWM。PWM 的全称是 Pulse Width Modulation,脉冲宽度调制。说白了,就是让一个方波的高电平时间(脉宽)按规律变化。你调节占空比,就能控制输出给负载的平均功率。
我举个例子。你有一个 LED,直接接 3.3V 它最亮。但如果你用 1kHz 的 PWM,占空比设成 50%,那 LED 看起来就只有一半亮度。为什么?因为人眼有视觉暂留效应,它把亮灭平均了。
ADC 呢,Analog-to-Digital Converter,模数转换器。它的任务是把连续的模拟电压,比如 0~3.3V,转成一个数字量。STM32 的 ADC 通常是 12 位的,也就是说,0V 对应 0,3.3V 对应 4095。中间的值按比例映射。
这两个东西经常配合使用。比如你用 PWM 控制一个加热器,再用 ADC 采集温度传感器的电压,形成一个闭环。这就是典型的嵌入式控制场景。
核心要点:
- PWM 的三个关键参数:频率、占空比、极性
- ADC 的三个关键参数:分辨率、采样率、参考电压
- 两者配合时,要注意时序同步和信号干扰
1.2 开发板选型:别在这上面栽跟头
做项目第一步,选板子。我见过太多人,买个几十块的盗版板子,结果调试了三天发现是晶振虚焊。浪费时间不说,还打击信心。
我个人习惯,教学和原型验证阶段,首选 STM32F103C8T6 核心板,也就是大家常说的“蓝板”或“红板”。为什么?
- 性价比高:几十块钱,资源够用
- 资料多:网上教程一抓一大把,遇到问题好查
- 外设齐全:有定时器、有 ADC、有 DMA,够咱们这门课折腾了
如果你预算稍微宽裕一点,我建议上 STM32F407VET6 或者 STM32G474。F4 系列带 FPU,做浮点运算快;G4 系列是专门为数字电源和电机控制优化的,PWM 和 ADC 的硬件特性更强。
| 型号 | 内核 | PWM 定时器 | ADC 位数 | 适合场景 |
|---|---|---|---|---|
| STM32F103C8T6 | Cortex-M3 | 4 个通用定时器 | 12 位 | 入门、基础控制 |
| STM32F407VET6 | Cortex-M4F | 14 个定时器 | 12 位 | 复杂控制、信号处理 |
| STM32G474RET6 | Cortex-M4F | HRTIM 高精度定时器 | 12 位(硬件过采样) | 数字电源、电机控制 |
我的建议: 如果你手头已经有板子了,别急着换。先拿它跑通咱们的例程。等后面遇到硬件瓶颈了,再考虑升级。我当年就是用一块 F103 的板子,做了三个商业项目。
1.3 示波器与万用表:调试人员的眼睛和手
做嵌入式调试,没有仪器就是盲人摸象。你代码写得再漂亮,信号不对全是白搭。
示波器,是调试 PWM 的必备工具。你写了一个 50% 占空比的 PWM,到底对不对?用示波器一看就知道。频率准不准?上升沿有没有过冲?有没有毛刺?一目了然。
选示波器,我建议至少 100MHz 带宽,1GSa/s 采样率。这个级别,对付 STM32 的 PWM 和普通 ADC 信号绰绰有余。品牌方面,普源、鼎阳这些国产的完全够用。预算够就上泰克或是德。
万用表,主要用来测电压、电阻、通断。ADC 采集不准的时候,第一步就是用万用表量一下输入引脚的实际电压。如果万用表量出来是 1.65V,ADC 读出来却是 2048,那说明你的代码或参考电压有问题。如果万用表量出来是 1.65V,ADC 读出来是 1500,那可能是分压电阻的精度问题。
避坑指南: 我曾经有一次,ADC 采集值一直跳,换了三个滤波算法都没用。最后用示波器一看,ADC 输入引脚上有一个 50Hz 的工频干扰。原因是我的杜邦线太长,像天线一样把市电噪声耦合进来了。从那以后,我调试 ADC 必先看示波器波形。
1.4 本章知识体系
下面这张图,把咱们这一章的核心知识点串起来了。你可以把它当作整个课程的导航图。
1.5 硬件清单与检查步骤
在正式开始之前,我建议你对照下面这个清单,把东西备齐。别等到上课了才发现缺这缺那。
- STM32 开发板:F103 或 F407,带 USB 线
- 示波器:100MHz 以上,带探头
- 万用表:自动量程,能测电压、电阻、通断
- 杜邦线:公对公、公对母、母对母各一包
- 面包板:830 孔或 400 孔
- 电阻电容:10kΩ、100kΩ 电阻,100nF 电容
- 电位器:10kΩ 可调电阻,用来模拟 ADC 输入
- LED:普通 5mm LED,加 220Ω 限流电阻
检查技巧: 拿到新板子,第一步不是上电,而是用万用表量一下电源对地的电阻。如果只有几欧姆,说明有短路,千万别上电。我见过有人把板子烧了,就是因为没做这一步。