原创 STM32上256点的FFT傅里叶变换

2010-6-22 22:10 7495 9 18 分类: MCU/ 嵌入式

STM32256点的FFT傅里叶变换<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


STM32F10XX系列IC进行256点的FFT,发现效果还不错,波形正如预期所想,基本没发现什么大异常。


输入信号: X="1"+sin(2*pi*fo*t)


信号频率: 10KHZ


抽样频率: 48KHZ


抽样点数: 256


从上面输入的信号,可知, 正弦信号时叠加在一个直流分量为1V的信号之上,那么在进行FFT变换之后,所得频谱幅度应该在2V左右,并且频率为0,说明为直流分量。


在频谱10KHZ出将出现幅值幅度为1V左右的信号频率。


为了验证程序代码,先在MATLAB上实现仿真。


MATLAB上仿真得到的结果,基本如上所述。


点击看大图 


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 


 


STM32的运算结果对比:

 


 8b02aea2-f8f5-4fc0-8e03-d620cd448834.jpg


 


VC模拟运算也基本符合(^_^


 ed712cad-f8b7-4f89-adf3-cb93395a089a.jpg


 


 


对比MATLAB,感觉波形还不错,基本一致!(大家可以从我的博客上下载到相关程序,进行对比)


 


上位机演示程序:


 


https://static.assets-stash.eet-china.com/album/old-resources/2010/6/21/37035672-d304-4904-b4d1-da09807c69de.rar 


MATLAB演示程序:


%by dz561
fs=48000;%设定采样频率
%N=128;
N=256;
n=0:N-1;
t=n/fs;
f0=10000;%设定正弦信号频率
x=1+sin(2*pi * f0*t);
figure(1);
subplot(211);
plot(t,x);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('1+sin(2*pi * f0*t)');
grid;
%进行FFT变换并做频谱图
y=fft(x,N);%进行fft变换
mag=abs(y)/N*2;%求幅值   equal to: aqrt(real(X).^2 + imag(X).^2)
f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换
figure(1);
subplot(212);
plot(f,mag)
xlabel('频率(Hz)');
ylabel('幅值');
title('实际幅值');
grid;

文章评论9条评论)

登录后参与讨论

用户377235 2014-1-24 21:30

楼主:你好!能否做2048FFT和4096点FFT分析,有重酬。OOYYYY@126.COM

用户377235 2012-2-20 14:55

楼主能共享一下工程代码吗 谢谢 isearcher@163.com

用户1647757 2011-8-14 20:22

楼主能共享下代码吗?

用户1647757 2011-8-14 20:14

楼主,真是好人!

用户362631 2011-8-7 08:32

软件提示缺少动态链~怎么办

用户315199 2011-1-5 19:20

請問博主~~~有來源碼可以參考嗎???

用户176951 2010-7-21 21:52

stm32的代码分享了吧!!呵呵

用户488365 2010-6-26 11:42

ARM代码有吗? 共享了吧!

用户412413 2010-6-22 20:40

非常感谢楼主,我正好在做相关的工作。

用户86205 2007-9-4 09:08

考  混凝土结构吧  嘿嘿

相关推荐阅读
用户1369714 2012-04-12 12:34
大家好,我是itspy,关于这个博客,请大家看过来!
大家好,我是itspy,关于这个博客...,很失望,以后不会用了 如果大家有什么问题,请到我的另一个博客去留言吧 我也很希望跟大家做交流,有什么技术问题,itspy会很乐意帮助的,新博客欢...
用户1369714 2011-08-07 14:35
uip 移植在rt-thread上的源码
*/本人在以前开发过程中移植uIP到RT-Thread实时线程系统,有需要用到项目中的朋友可以参考一下。 附件是源码包,在以太网驱动采用DM9000,驱动程序和移植文件uipif.c在源码包下(rt...
用户1369714 2011-01-13 10:32
Linux内核的社会视角--Mr. Process的一生
         Linux内核是一个无比复杂的系统,要想看清大致的脉络也非易事。其实,可以把运行中的Linux想像成一个人类的社会,当中的进程就是社会中的人。人有生老病死,进程有创建、异常、终止。人...
用户1369714 2011-01-08 12:39
RT-Thread Radio 网络播放器--初次零距离接触!
      今天很高兴, 收到了RT-Thread Radio套件,还有ffx和RT-Thread工作室写的新书《RT-Thread 实时操作系统 编程指南》。 如此令人快乐的事,如此高兴,实在是想不...
用户1369714 2011-01-05 15:43
如何编写linux的驱动程序
如何编写Linux的驱动程序编写linux驱动程序,应该是一件得心应手的事,因为linux是开源的,从上往下或从下往上,一切都是那么的光明磊落的呈现于眼前。只要你愿意,你可随意了解你所想知道的东西。L...
用户1369714 2010-12-28 10:12
Busybox制作Linux根文件系统
Busybox ——嵌入式Linux中的瑞士军刀利用busybox-1.13.0制作linux根文件系统(yaffs2)源码下载:http://www.busybox.net/downloads/操作...
我要评论
9
9
关闭 站长推荐上一条 /2 下一条