https://static.assets-stash.eet-china.com/album/old-resources/2009/10/13/a464c211-1a50-4143-9de3-d124dcaa1571.rar" target=_blank>
my FFT
暑假期间,我们花了很长时间做了个音频信号分析仪。我主要负责硬件电路和单片机编程,但对于FFT(快速傅里叶变换)算法,是由另一个队友编的。
事关FFT算法实在是太太太重要了,我不得不自己也来写一个。国庆假期的后几天,我就苦下心来看数字信号处理关于FFT的那部分,从CTFT到DTFT,再到DFT都重看了一遍,最后在10月7号和8号两写出了一个最简单的8点FFT。核心程序代码量不多,就那么的两个函数,位倒置和蝶形运算,而且每个函数也只有十行多一点,但就是其中的某条变太的语句就能花你老半天去编。
今天是17班聚会,大家都比较开心。晚上回到宿舍,有点累,对了电脑一下子,实在不行,就睡了。还不到十点呢。到了两点多突然醒了,怎么睡也睡不着了。也罢,干脆起床,于是就继续把程序剩下的一点东西给写完。花了两个多小时才搞定。
音频信号为20~20KHZ之间,根据Nyquist定理,采样率必须>=两倍最高信号频率,于是我把ADC采样率设置为40KHZ.而我用是处理器不是DSP,也不是ARM,而是AVRmega16单片机,SRAM和mega8一样小,只有1K,64点的FFT也就差不多到它的极限了。于是目前的分辩率只有625Hz(40K/64).16M的晶振,跑得挺快的,放个24M的话估计离实时不远了^_^
下面就64点的FFT测试。第一张是测试正弦波的,第二张为方波的频谱。座标是线性的,没取对数,也没高低排序(以后再做吧)。方波测试时,实际信号是7K,而FFT测得是6.875K,这是因为我的分辨率只有625HZ,有点偏差就不足为奇了。
高手们看到不要取笑哦~~
10K正弦波测试
7K方波测试
文章评论(0条评论)
登录后参与讨论