上一章介绍了利用STM32的TIM的捕获功能实现频率测量的方法,但测量误差受被测信号频率的影响,不适合测量频率变化较大的 。本章将介绍等精度测频的方法以及STM32的实现。
-
STM32硬件电路板及仿真器(以STM32F072C8单片机为例)
-
Keil v5以上版本(MDK-ARM)
基本原理
首先看一张图:
传统的测频方式,闸门放时间是固定的,闸门时间内被测信号的计数个数Nx不一定是整数个,因此会有一定的误差,且误差与被测信号频率有关。而等精度测频的方法,闸门时间不是固定的,而是被测信号的整数倍。 因此消除了对被测信号计数的±1误差,其误差只与标准信号的计数个数Ns的±1误差有关。可以看出,闸门时间越长,标准频率Fs越大,Ns的计数值越大,±1误差的影响就小。在相同的闸门时间内,被测信号的频率Fx=Nx*Fs/Ns。
STM32的实现
实现等精度测频用到两个定时器,其中一个定时器用于产生闸门时间,另外一个用于捕获被测信号和标准信号计数。
实现步骤:
-
TIM1设置约1秒的闸门时间。
-
TIM3捕获到被测信