STM32定时器输入捕获测频率时,为什么高频段读数会跳变?从预分频与捕获边沿配置排查

· 行业用户 · 5 浏览

回答(4)

信号本身也要看:探头地线太长、阻抗不匹配会让高频波形振铃,施密特触发器多次翻转。先示波器看波形,再谈寄存器。
信号完整性王工 · 2026-10-26
边沿别配成双边沿,CCER里只开上升沿;同时把IC滤波器降到最低,高频窄脉冲被滤掉就会漏捕,读数忽大忽小。
嵌入式小刘 · 2026-10-26
先确认是不是溢出:高频下ARR太小会频繁溢出,捕获值被覆盖就表现为跳变。把ARR设到最大,用溢出计数扩展位宽再算频率。
硬件老张 · 2026-10-26
高频段跳变通常不是算法问题,而是捕获链路的时间分辨率与边沿判定出了问题。先查预分频:输入捕获的计数时钟为TIMxCLK/(PSC+1),若PSC设得过大,高频下每个计数周期代表的实际时间变长,±1个计数的量化误差被放大,读数自然跳动。建议高频测量时PSC=0,让计数器以最高时钟运行,并优先用“捕获周期法”(测两个上升沿之间的计数值)而非测脉宽。再查边沿配置:确认CCxP与CCxNP只使能了一个有效边沿,避免双边沿触发导致捕获值交替;同时检查输入滤波ICF,高频时应减小或关闭滤波,否则滤波延迟会吞掉窄脉冲造成漏捕。还要确认信号幅度和斜率满足施密特触发器要求,必要时外加整形。最后用DMA或中断及时读CCR,防止溢出覆盖。
mcuku 阿沐 · 2026-10-26