4. 使用示波器测量PWM信号
任务目标
使用示波器测量STM32定时器输出的PWM信号,读取频率与占空比,并通过改变负载观察波形畸变,定位畸变原因(阻抗不匹配/驱动能力不足)。
硬件与接线
- 主控:STM32F103C8T6(Blue Pill)
- 示波器:任意双通道数字示波器(带宽≥50MHz)
- 接线:PA8(TIM1_CH1)→ 示波器探头;GND → 示波器地线夹
- 负载:1kΩ电阻(正常)、10Ω电阻(畸变测试)、10cm杜邦线(寄生电感)
固件配置(STM32CubeMX + HAL库)
// 定时器初始化:TIM1, Channel1, PWM Generation
// 时钟:APB2 = 72MHz, TIM1 时钟 = 72MHz
// 预分频 PSC = 71 → 计数时钟 = 1MHz
// 自动重载 ARR = 999 → PWM频率 = 1MHz / (999+1) = 1kHz
// 比较值 CCR1 = 250 → 占空比 = 250/1000 = 25%
// main.c 关键代码
TIM_OC_InitTypeDef sConfigOC = {0};
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 250; // CCR1 = 250 → 25% 占空比
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); // 启动PWM输出
示波器测量步骤
- 频率测量:按示波器
Measure键,添加频率测量项,读取显示值(预期约1.00kHz)。 - 占空比测量:添加正占空比测量项,读取百分比(预期约25.0%)。
- 波形观察:将时基设为200µs/div,观察一个完整周期内高电平时间约250µs,低电平约750µs。
畸变测试与原因分析
| 测试条件 | 示波器观察现象 | 畸变原因 |
|---|---|---|
| 空载(仅探头) | 方波边沿陡峭,无过冲 | — |
| 接10Ω电阻 | 高电平幅值下降(如从3.3V降至2.8V) | 驱动能力不足:PA8最大拉电流约20mA,10Ω负载需330mA |
| 接10cm杜邦线 | 上升沿出现过冲/振铃 | 寄生电感与探头电容形成LC谐振 |
验证判定标准
- 频率读数在0.98~1.02kHz范围内(示波器±2%精度)
- 占空比读数在24.0%~26.0%范围内
- 空载波形上升时间<50ns(若示波器带宽足够)
- 接10Ω负载时幅值跌落>0.3V,确认驱动能力不足
常见测量误差规避
- 使用探头×10档(衰减10倍),输入电容约10pF,减少对波形的影响
- 接地线尽量短(使用接地弹簧),避免长地线引入额外电感
- 测量前进行探头补偿校准(方波调平)
关键结论
频率与占空比测量直接反映定时器配置是否正确;波形畸变由负载阻抗与寄生参数引起,而非软件问题。若畸变影响下游电路,需增加缓冲器(如74HC245)或降低边沿速率(增大PSC或使用TIM_OCMODE_PWM2配合RC滤波)。