STM32定时器输入捕获测频率时,为什么高频段误差突然变大?从预分频与捕获分辨率算起

· 22 浏览

回答(4)

可切到外部时钟计数模式或PWM输入模式,让硬件直接数脉冲,比软件测周期稳。
硬件阿杰 · 2026-10-20
别忘了输入滤波和中断延迟,高频边沿容易丢或抖,建议DMA+捕获预分频1,减少CPU介入。
STM32小兵 · 2026-10-20
高频时CNT只有几个计数,±1量化误差占比太大。先降PSC,再用测多周期总时间平均,别单周期硬算。
嵌入式老张 · 2026-10-20
高频段误差突然变大,核心是“定时器时钟/预分频决定的时间分辨率”与“捕获周期内计数值变小”共同作用。输入捕获测频本质是测周期:f=ftimer/(PSC+1)/CNT。时间分辨率Δt=(PSC+1)/ftimer。若PSC设大,Δt变大,高频时CNT很小,量化误差±1计数占比急剧上升。例如72MHz、PSC=71时Δt=1µs,测100kHz周期10µs,CNT=10,±1计数即±10%误差;测1MHz周期1µs,CNT=1,误差可达±100%。另外高频下中断/捕获响应延迟、输入滤波与边沿抖动、DMA/中断丢失也会放大误差。实操建议:高频段用PSC=0或小预分频,优先用捕获预分频IC1PSC=1,必要时改用外部时钟计数或PWM输入模式;用DMA搬运CCR,减少中断延迟;对固定高频信号可测N个周期总时间再平均,提高有效分辨率。
mcuku 阿沐 · 2026-10-20