stellar
发表于 2023-8-3 21:34:29
请问32f可以改成1024个采样点数的fft吗?
梁工
发表于 2023-8-3 23:12:42
stellar 发表于 2023-8-3 21:34
请问32f可以改成1024个采样点数的fft吗?
可以,但是要注意,1024点的计算量多了好几倍。
梁工
发表于 2023-8-3 23:19:53
本帖最后由 梁工 于 2023-8-3 23:40 编辑
lzp0223 发表于 2023-8-3 17:13
梁工,fft的例程如何获取频谱对应实际频率和他对应的幅值啊
例子中,实部平方+虚部平方,然后开方,就是对应的幅度(峰值),频率是线性的,比如例子用25.6KHz采样,则12点频率就是0HZ(直流)、100Hz、200Hz、300Hz。。。。12700Hz,一共128点频率。
计算幅值:
for(i=0; i<LENGTH/2; i++)
{
FFT_A = sqrt((long)FFT_Real*(long)FFT_Real + (long)FFT_Image*(long)FFT_Image); //计算模值, STC32F @52MHz 加载硬件浮点库+整数库, 打开Cache: 455us.
}
梁工
发表于 2023-8-3 23:40:24
lzp0223 发表于 2023-8-3 17:21
梁工,在15kHz下输入正弦波,他的频谱是往右移动,但超过15kHz后,增大频率频谱会向左移动,这是为什么 ...
根据采样定理,25.6KHz采样只能输入12.7KHz以下的频率,超过则发生频谱更迭。
由于傅里叶变换的共轭对称性,所以会出现对称的两半频谱值,我们值显示低128点就可以了,高128点是对于fs/2对称的。
lzp0223
发表于 2023-8-4 01:10:24
梁工 发表于 2023-8-3 23:40
根据采样定理,25.6KHz采样只能输入12.7KHz以下的频率,超过则发生频谱更迭。
由于傅里叶变换的共轭对称 ...
那我如果要修改ad采样频率的话直接修改SAMPLE_RATE就可以吗
梁工
发表于 2023-8-4 12:05:22
lzp0223 发表于 2023-8-4 01:10
那我如果要修改ad采样频率的话直接修改SAMPLE_RATE就可以吗
是的,只要是256点的FFT,只需改动SAMPLE_RATE,就可以得到你想要的任何采样率,但能保证连续计算的最高采样率是25.6KHz,再高的话,计算时间将超过采样时间。
神农鼎
发表于 2023-8-5 15:36:25
梁工在另外一个帖子中的STC32G12K128实现FFT:
我改成STC32G的了,主频30MHz,先发程序,使用说明还没来得及改。
MCU:STC32G12K128,例子使用实验箱9.61验证。
主频:30MHz。
FFT:256点采样,128点频谱显示,USB-CDC传给STC-ISP里的示波器界面显示频谱。
采样频率最高25.6KHz,下面的程序已按楼主要求用12.8KHz采样,分辨率50Hz。
https://www.stcaimcu.com/forum.p ... ptid=3556&pid=23489
hu_jia168
发表于 2023-9-11 01:34:09
请问有STC8H8K64U的FFT的例程么?
hu_jia168
发表于 2023-9-11 01:35:57
请问梁工,有移植STC8H8K64U 的FFT例程么?
梁工
发表于 2023-9-11 10:07:50
hu_jia168 发表于 2023-9-11 01:35
请问梁工,有移植STC8H8K64U 的FFT例程么?
这个没有,因为STC8H计算太耗时间,所以没移植。