[求助] 用STM32测量频率遇到的问题

阳光守望者   2015-7-16 22:51 楼主
做STM32测量频率,用定时器捕获测量100K-130K误差278HZ,用两个定时器一个计数另一个定时测量出来数据不稳定,只能精确到百位,比如测量100184测量出来是100100HZ或者100200HZ,大家说测量100K-130K频率用哪种方法比较精确,谢谢

回复评论 (9)

直接使用输入捕获来实现精确的频率测量啊
点赞  2015-7-17 00:48
如果信号是稳定的,可以测多个周期。
点赞  2015-7-17 06:34
我用捕获测得低频误差很小,100K以上误差很大,是不是应该换个方法试
点赞  2015-7-17 09:09
最有效的方法是提高mcu运行速度
点赞  2015-7-17 09:13
引用: 阳光守望者 发表于 2015-7-17 09:09
我用捕获测得低频误差很小,100K以上误差很大,是不是应该换个方法试

该方法固有的误差:

1/(1/100000-1/100278.0)=36M
也就是100K 与 100.2k 单周期的时间差 < 0.0几 us (MCU无法分辨)
点赞  2015-7-17 09:23
重复波的频率,低频可以对单周期计时(计数),高频可以对一段时间内的待测频率计数,比如1s计数下来对你的待测频率(100k)来说不会有误差,但就是测量时间较长。
如果还要较快测量,那可以对多个周期(比如100个)计时,这样估计需要两个定时器配合来做~软硬件复杂一点。
点赞  2015-7-17 13:31
第一种方法,你用的是类似脉宽捕获测周期,被测频率越高,误差越大。因为频率越高,脉宽越窄,计数值越小,相对误差就越大。相对误差差不多就是被测频率/定时器的clock,所以就会出现你说的,低频测的很准,高频就误差较大的情况,按照主频50M估算,就是千分之二,和你测的差不多。所以高频信号一般用你说的第二种方法,但是误差大小要看你定时的长短。如果定时1s,理论误差应该在个位,那么定时0.1s,误差就会在10位,定时0.01s,误差就在百位。如果定时足够长,误差还是较大,有可能是定时器和计数器之间没有很好同步造成。
点赞  2015-7-17 20:36
引用: lcdi 发表于 2015-7-17 13:31
重复波的频率,低频可以对单周期计时(计数),高频可以对一段时间内的待测频率计数,比如1s计数下来对你的 ...

我现在就是用外部计数1S来测量的,误差10HZ左右
点赞  2015-7-20 10:05
引用: johnrey 发表于 2015-7-17 20:36
第一种方法,你用的是类似脉宽捕获测周期,被测频率越高,误差越大。因为频率越高,脉宽越窄,计数值越小, ...

分析的很对,我现在用 外部计数,定时1S来测,误差10Hz,应该还能提高,正在调
点赞  2015-7-20 10:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复