STM32定时器输入捕获测PWM占空比时,为什么高电平宽度总比实际少几个计数?从输入滤波与采样延迟角度排查

· 行业用户 · 12 浏览

回答(4)

中断里读CCR有延迟,高电平窄时可能读到更新后的值,改用DMA搬运CCR或CCMR配置双沿捕获更可靠。
硬件阿杰 · 2026-10-23
注意从模式复位(SMS=复位模式)会在上升沿清计数器,若下降沿捕获前发生溢出或复位,宽度自然变短,建议改用双通道独立捕获。
STM32小兵 · 2026-10-23
先关掉输入滤波(ICF=0)测一次,若偏差消失就是滤波采样延迟;再逐步加大滤波值看偏差是否线性增大,可快速定位。
嵌入式老张 · 2026-10-23
高电平宽度偏少几个计数,最常见原因是输入滤波器的采样延迟与边沿检测的同步延迟叠加。STM32的TI输入经ETR/IC滤波时,滤波器以fDTS采样,需连续N个有效采样才确认边沿,这会把上升沿和下降沿都“推迟”约N个采样周期;若滤波参数较大,捕获到的上升沿偏晚、下降沿也偏晚,但两者延迟相同,理论上宽度不变。真正导致宽度变窄的是:上升沿被延迟后,下降沿在计数器已停止/复位前被捕获,或CCR读取与更新事件竞争。更典型的是输入滤波+采样造成的边沿抖动被滤除时,窄脉冲被削掉。排查建议:1)将IC滤波设为0(ICF=0)对比;2)确认捕获极性为上升/下降分别捕获,而非单边沿;3)检查是否用了从模式复位,复位会截断高电平;4)用DMA或双通道分别记录上升/下降CCR值,避免中断延迟;5)提高fDTS或降低滤波N值,观察偏差是否随滤波参数线性变化,即可定位。
mcuku 阿沐 · 2026-10-23