在嵌入式开发的实际应用中,测量外部脉冲信号频率是非常常见的应用场合,论是电机的转速监测、流量计的脉冲计数,还是遥控解码以及环境传感器的信号解析,都离不开对频率或周期的精确捕捉。
如何精准的测量频率,在嵌入式开发中大体有两种方法:定时器/计数器周期测量法、定时器输入捕获法。
本期我们就来介绍两种测量方式的优劣。
1、周期测量法
频率的定义即每秒的脉冲数,周期测量法顾名思义是在固定周期内统计脉冲的个数直接得到频率,由单片机开启两个定时器,其中一个配置为计数器用于统计脉冲个数,另一个定时器用于定时记录和清理计数值。
两个定时器相互配合,在高频信号测量中展现了极高的精度和稳定性。但是在低频信号中就会展示出较大的误差,每次开启和关闭定时器的时间不会恰好是脉冲的边沿,因此极大概率会统计漏一个北侧脉冲,在低频情况下这个漏统计的脉冲会带来极大的测量误差。
2、定时器输入捕获法
在高级定时器中,通常有通道输入捕获的功能,这使得定时器通道可以被信号的上升沿和下降沿触发中断。同时定时器本身还具备定时功能。
基于这个机理,我们可以在信号的边沿触发中断,在中断回调函数中改变触发模式:例如我们开始设置为上升沿中断,进入中断后记录当前的定时器数值,继而将中断改为下降沿触发。进入下降沿后再次统计当前定时器计数值。二者之差即为高电平时间。
再第二次改为上升沿触发,进入中断回调函数后,和上一次的计数差值即为低电平时间。
输入捕获模式使得单片机可以准确的得到脉冲的高低电平具体时间,通过直接获得周期的方式计算脉冲频率。但是当外部信号频率过高时,输入捕获方式会高频率进入外部中断函数导致在高频信号中有着较大的测量误差。
总结
在嵌入式开发中,这两种脉冲计数方式各有优劣,周期计数法通过固定闸门时间统计脉冲总数,在被测信号频率越高时,由于脉冲样本充足而展现出卓越的高频稳定性,但在低频段会因采样不足产生显著的离散误差;相比之下,脉冲捕获法通过高频基准时钟测量单个脉冲的周期,信号频率越低则计数值越充沛,从而在低频段拥有极高的分辨率,但当频率升高导致周期缩短时,基准时钟的分辨率限制便会使高频精度迅速恶化。
因此,开发者必须根据目标信号的频率区间进行权衡,在高频段依赖周期计数法法的计数累积效应,在低频段则发挥脉冲捕获法法的时间精细捕捉优势,以弥补单一测量方式在物理机理上的固有
288