傅里叶是一位法国数学家。他所发表的傅里叶级数法,极大地推动了微分方程理论的发展。傅里叶级数拓宽了函数概念,从而推动了函数论的研究。傅里叶变换是数字信号处理领域一种很重要的算法。其表明任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。DSP即数字信号处理器,可以处理浮点型数据。在傅里叶中我们常常使用FFT(快速傅里叶变换), 那么如何使用STM32的DSP进行FFT呢?

方法/步骤
-
1
资源配置:
下载STM32官方的DSP库文件,这个大家需要从网上去下载,小编在这里就不多做介绍了。
-
2
添加库文件:
把自己下载的库文件添加到工程文件里面,在通过双击2或者点击1添加文件。
-
3
第一步点击新建文件夹,第二步添加文件【add files】,第三步选中要添加的文件,第四步点击【add】,最后点击【OK】就行了。
-
4
第一步点击新建文件夹,第二步添加文件【add files】,第三步选中要添加的文件,第四步点击【add】,最后点击【OK】就行了。
-
5
添加完毕后,出现了两个文件,一个arm_fft_bin_example_f32.c是官方的例子 和官方的数据 arm_fft_bin_data.c
-
6
调用DSP函数:
1、 添加完毕后,就可以使用dsp函数了。接着 我介绍一下这几个函数的作用
/* IniTIalize the CFFT/CIFFT module */
status = arm_cfft_radix4_init_f32(&S, fftSize,
ifftFlag, doBitReverse); //这里是FFT的初始化
/* Process the data through the CFFT/CIFFT module */ //FFT计算的函数 注意 tesTInput_f32_10khz 这个数组 不能是const 因为计算值是覆盖在这里面的
arm_cfft_radix4_f32(&S, tesTInput_f32_10khz);
/* Process the data through the Complex Magnitude Module for // FFT出来的是复数 这里是把复数求模 得幅值
calculaTIng the magnitude at each bin */
arm_cmplx_mag_f32(testInput_f32_10khz, testOutput,
fftSize);
/* Calculates maxValue and returns corresponding BIN value */ //这里是求FFT出来数据模的最大值
arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);
使用这些函数就能进行傅里叶变换了。
-
7
根据不同的情况使用不同的函数,继续加油吧。
END
文章评论