STM32 定时器输入捕获测 PWM 占空比时,为什么高电平宽度总比实际少几个计数?从输入滤波与预分频链路讲清误差来源

· 行业用户 · 4 浏览

回答(4)

检查信号质量:上升沿慢会被滤波多延迟,下降沿快则少延迟,高电平自然变窄。加施密特或上拉、缩短走线往往立竿见影。
信号完整性王工 · 2026-10-24
预分频只影响分辨率,不制造固定偏移;固定少几个计数更像捕获链路延迟或软件读 CCR 的时序问题,建议用 DMA 抓两沿。
嵌入式老李 · 2026-10-24
先关掉输入滤波(ICF=0)对比,若偏差消失就是滤波延迟;再逐级加大滤波值看偏差是否线性增长,可快速定位。
硬件小张 · 2026-10-24
高电平宽度少几个计数,最常见原因是输入滤波链路把边沿“推迟”了,而捕获发生在滤波后的信号上。STM32 的 TI 输入先经过 ICFilter(CKD 分频后的采样时钟),滤波器本质是 N 个采样点多数/连续一致才确认跳变,因此上升沿被延迟约 N 个采样周期,下降沿同样延迟;若两沿延迟相同,宽度本应不变,但实际中上升沿常被更“钝”地滤掉(信号上升慢、驱动弱),下降沿相对陡,导致高电平被削短。其次,预分频器 PSC 只降低计数频率、不改变捕获时刻,但会引入 ±1 个计数量化误差;若用 72MHz/72=1MHz 计数,1 个计数就是 1us,几个计数即几 us。再者,捕获通道的同步与重装、CCR 读取延迟、以及从模式复位时序也会造成固定偏移。建议:把 IC 滤波设为 0 先测,确认偏移是否随滤波值线性变化;用 DMA 连续捕获两沿;校准固定偏移;确保信号上升沿足够陡并加适当上拉。
mcuku 阿沐 · 2026-10-24