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输出

示波器测量步骤

  1. 频率测量:按示波器 Measure 键,添加频率测量项,读取显示值(预期约1.00kHz)。
  2. 占空比测量:添加正占空比测量项,读取百分比(预期约25.0%)。
  3. 波形观察:将时基设为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,减少对波形的影响
  • 接地线尽量短(使用接地弹簧),避免长地线引入额外电感
  • 测量前进行探头补偿校准(方波调平)
PWM波形畸变对比 理想方波 畸变波形(过冲+振铃) 幅值跌落 过冲 振铃 时间(200µs/div) T=1ms

关键结论

频率与占空比测量直接反映定时器配置是否正确;波形畸变由负载阻抗与寄生参数引起,而非软件问题。若畸变影响下游电路,需增加缓冲器(如74HC245)或降低边沿速率(增大PSC或使用TIM_OCMODE_PWM2配合RC滤波)。