外观
一、项目介绍
简介:基于STM32F103C8T6的简易数字频率计项目,使用1.8TFT屏幕进行数据显示,支持1Hz~20Mhz波形频率测量,支持任意波形,不局限于方波输入,输入电压范围在0.7~3.3V,项目板载SI5351-时钟芯片,理论上支持2.5Khz~200Mhz频率输出,且支持小数位分频,可以用来作为基准频率测量与校准。
二、 仿真验证
在tina中搭建pwm转dac电路以及比较器转换电路,对电路进行仿真,希望得到的输出波形是一个占空比为50%左右的方波,这样能够最好的采集信号的上升沿或下降沿从而计数得到频率。
![]() | ![]() |
---|
三、项目测试
使用板载时钟芯片测试10Khz、100Khz、1Mhz;频率基本没有误差。
![]() | ![]() | ![]() |
---|---|---|
板载10K输出 | 板载100K输出 | 板载1M输出 |
使用板载时钟芯片测试5Mhz、10Mhz、20Mhz;频率误差在万分之一左右,推测是单片机程序执行的延时,也可能是晶振本身频偏的累计,此处我没有专业设备,没办法校准,理论上可以通过线性拟合进行校准。
![]() | ![]() | ![]() |
---|---|---|
板载5Mhz输出 | 板载10Mhz输出 | 板载20Mhz输出 |
![]() | ![]() | ![]() |
---|---|---|
5Mhz实际频率数 | 10Mhz实际频率数 | 20Mhz实际频率数 |
在低频下表现也比较友好,此时测量我均是使用高频输入通道(定时器ETR功能)进行测量,感觉偏差也不大,如果是需要hz级别测量且有小数点,也同样提供了低频输入通道(定时器捕获功能),但是我没有设备输出小数点hz频率,所以在代码中也没有写,有需要可以自行增加。
![]() | ![]() | ![]() |
---|---|---|
0.7V、10Hz锯齿波输出 | 0.7V、10Hz方波输出 | 0.7V、1Hz方波输出 |
四、使用说明
项目使用非常简单,烧录代码后,使用万用表-小表笔测量外部信号即可。项目没有做信号电压调理,所以不要测量超过3.3V的信号,以免造成损坏。
五、现存问题
受限于pwm转dac的性能,以及比较器的性能,输入电压目前没办法小于0.7以下,且输入信号频率不能高于30Mhz,否则此时比较器基准电压的波动会被放大导致输出信号不是一个良好的方波,从而导致测量不准。
除此之外,目前硬件电路设计似乎会导致比较大的寄生电容干扰,虽然后级经过比较器后对输入到单片机的信号影响较小,但是直接使用该频率计测量单片机上的无源晶振电路时,会导致晶振寄生电容异常从而停振。目前没有想到较好的办法解决。