[其他ST产品] STM32F4 Timer+ADC+DMA+FFT的理解与应用

[复制链接]
4446|77
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:04 | 显示全部楼层
和我们输入的峰值3V的信号差不太多。
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:05 | 显示全部楼层
接下来看一下幅度谱的情况:
617064eb1fd3af6df.png
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:05 | 显示全部楼层
前文已经提及过,幅度谱的负半轴是没有什么作用的,所以这里只有原点(直流分量)和正半轴的数据。现在我们来分析一下红框框住的数据:
0:处就是所说的直流分量。因为这里我们是拿AD值计算的FFT,所以输出的值也是类似于AD值,所以我们又可以用:Voltage = AD_Value*3.3V/4096 计算可得1.504,满足我们所设置的偏移量也就是直流分量。
8:处就是我们的1KHz的幅度信息了。为什么会是8呢?我们又根据前文的分析:

频谱图频率分辨率:f0 = fs/NPT = 32 000Hz/256 = 125Hz
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:05 | 显示全部楼层
在这里的意思就是横坐标一格代表125Hz,而我们是1000Hz的信号,自然在第8个点的位置了(1000Hz/125Hz=8)。

再来看幅值信息,通过公式Voltage = AD_Value*3.3V/4096发现差不多也是1.5V左右。但这只是一半,所以在1KHz处的幅度是1.5*2=3V。
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:05 | 显示全部楼层
它的幅度谱长这样:

8360664eb1ff56d6e5.png
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:05 | 显示全部楼层
输入2KHz 0V到3V(即幅度:3V,偏移:1.5V)
这一次我们换成2KHz的试试看。
5446364eb2002400cc.png
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:06 | 显示全部楼层
对于2KHz的信号,采到信号的16个周期,也是满足此公式的:

采到的被采信号周期数:NT = t/T


5665164eb200f42466.png
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:06 | 显示全部楼层
对于2KHz的信号,一个周期采到16个点,也是满足此公式的:

一个被采信号周期的被采到的点数:fs/f = 32 000Hz/2000Hz = 16
2043364eb201b08678.png
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:06 | 显示全部楼层
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:06 | 显示全部楼层
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:06 | 显示全部楼层
这里为什么会在第16个点,想必大家也能够理解了。(2000Hz/125Hz=16)
这里提一嘴:对于1KHz的信号,基波频率是1KHz,二次谐波是2KHz,三次谐波是3KHz。也就是第8,第16,第24个点。
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:06 | 显示全部楼层
输入125Hz 0V到3V(即幅度:3V,偏移:1.5V)
这里我们尝试直接输入f0=125Hz。
8877664eb203e64e14.png
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:07 | 显示全部楼层
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:07 | 显示全部楼层
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:07 | 显示全部楼层
如愿以偿的出现在了第一个点的位置。
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:07 | 显示全部楼层

输入200Hz 0V到3V(即幅度:3V,偏移:1.5V)
这里或许就有人好奇了,输入的信号如果不是125Hz的整数倍会怎样,我们来试试。输入一个200Hz看看。
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:07 | 显示全部楼层
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:07 | 显示全部楼层
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:07 | 显示全部楼层
 楼主| 我爱台妹mmd 发表于 2023-8-27 18:07 | 显示全部楼层
可以看到,幅值散在了理论上200Hz附近的各个位置,但实际上这个横坐标上是没有200Hz这个点的,所以造成了这样的结果。这样的幅值信息也是相当不准确的,所以我们在应用的的过程中要尽量避免这种情况。所以控制好采样率fs是关键! 毕竟用dsp库的话采样点数NPT是没法控制的嘛。根据公式:

频谱图频率分辨率:f0 = fs/NPT
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部