原创 my FFT

2009-10-13 06:44 2601 5 5 分类: MCU/ 嵌入式

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的那部分,从CTFTDTFT,再到DFT都重看了一遍,最后在107号和8号两写出了一个最简单的8FFT。核心程序代码量不多,就那么的两个函数,位倒置和蝶形运算,而且每个函数也只有十行多一点,但就是其中的某条变太的语句就能花你老半天去编。


       今天是17班聚会,大家都比较开心。晚上回到宿舍,有点累,对了电脑一下子,实在不行,就睡了。还不到十点呢。到了两点多突然醒了,怎么睡也睡不着了。也罢,干脆起床,于是就继续把程序剩下的一点东西给写完。花了两个多小时才搞定。


       音频信号为20~20KHZ之间,根据Nyquist定理,采样率必须>=两倍最高信号频率,于是我把ADC采样率设置为40KHZ.而我用是处理器不是DSP,也不是ARM,而是AVRmega16单片机,SRAMmega8一样小,只有1K64点的FFT也就差不多到它的极限了。于是目前的分辩率只有625Hz(40K/64).16M的晶振,跑得挺快的,放个24M的话估计离实时不远了^_^


       下面就64点的FFT测试。第一张是测试正弦波的,第二张为方波的频谱。座标是线性的,没取对数,也没高低排序(以后再做吧)。方波测试时,实际信号是7K,而FFT测得是6.875K,这是因为我的分辨率只有625HZ,有点偏差就不足为奇了。


       高手们看到不要取笑哦~~


 


点击看大图


10K正弦波测试


点击看大图


7K方波测试



PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /4 下一条