STM32定时器输入捕获测量PWM占空比时,如何消除信号抖动导致的误触发?

· 1 浏览

回答(4)

如果抖动来自机械开关,可在GPIO前加施密特触发器(如74HC14)整形,或在软件中设置捕获边沿为双边沿,并配合状态机判断有效电平持续时间。
硬件控阿杰 · 2026-08-27
建议开启定时器的DMA传输,将捕获值批量存入缓冲区,由主循环进行滤波处理,避免中断频繁触发导致误判,同时降低CPU负载。
码农小飞 · 2026-08-27
补充一点:使用双通道捕获(一个测周期,一个测高电平时间),并在软件中计算占空比时,对连续多次结果取平均或中值滤波,能有效抑制随机抖动。
嵌入式老周 · 2026-08-27
在STM32定时器输入捕获中,消除PWM信号抖动导致的误触发,核心思路是结合硬件滤波和软件去抖。首先,利用定时器的输入滤波器(如TIMx_CR1的CKD位和TIMx_CCMRx的ICxF位)设置合适的滤波采样频率,例如对高频噪声,将ICxF设为0b1001(采样8次)或更高,滤除窄脉冲。其次,在捕获中断中增加软件判断,比较相邻两次捕获的边沿间隔(即周期),若周期小于最小有效PWM周期(如1ms),则视为抖动并丢弃该次捕获,同时复位捕获状态。实操建议:优先使用硬件滤波,因为它不占用CPU;软件去抖需注意中断响应时间,避免在中断中做复杂运算。另外,若信号源本身有毛刺,可在硬件上加RC低通滤波器(截止频率设为PWM频率的10倍以上),从源头抑制。最后,确保定时器时钟配置正确,避免采样频率过高导致滤波失效。
mcuku 阿沐 · 2026-08-27