分享一个自制的STM32F767等精度频率计,最高可测46M方波!

2019-07-20 02:51发布

最近研究STM32CUBE,并想实现测频功能,便采用等精度测频法制作了一个频率计。

原理图如下:

cc9ec0ea21556f793575eaea41c04c31.jpg
20140906111708221.jpg

测量开始,首选单片机发出一个清零信号CLR,使2个32 b的计数器和D触发器置0,然后单片机再发出允许测频命令,即使预置门控信号GATE为高电平,这时D触发器要一直等到被测信号的上升沿通过时,Q端才被置1,即使BZ_ENA和DC_ENA同时为1,将启动计算器BZ_Counter和DC_Counter,系统进入计算允许周期。这时,计数器BZ_Counter和DC_Counter分别对被测信号和标准频率信号同时计数。当Tc秒过后,预置门控信号被单片机置为低电平,但此时2个32 b的计数器仍然没有停止计数,一直等到随后而至的被测信号的上升沿到来时,才通过D触发器将这2个计算器同时关闭。由图2所示的测频时序图可见,GATE的宽度和发生的时间都不会影响计数使能信号允许计数的周期总是恰好等于待测信号XCLK的完整周期,这正是确保XCLK在任何频率条件下都能保持恒定测量精度的关键。因为,此时GATE的宽度Tc改变以及随机的出现时间造成的误差最多只有基准时钟BCLK信号的一个时钟周期,由于BCLK的信号是由高稳定度的100 MHz晶体振荡器发出的,所以任何时刻的绝对测量误差只有1/108 s,这也是系统产生主要的误差。
设在某一次预置门控时间Tc中对被测信号计数值为Nx,对标准频率信号的计数值为Nb,则根据闸门时间相等,可得出公式(1):
程序如下: Equal precision frequency.zip (13.64 MB, 下载次数: 693) 2017-7-24 20:40 上传 点击文件名下载附件

CUBE库的配置方法放在了压缩包中,欢迎讨论!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。