0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DSP进行浮点快速傅立叶变换剖析

贸泽电子设计圈 来源:互联网 作者:佚名 2017-09-18 06:44 次阅读

前言

本文目的是演示如何使用STM32F30x 内部的DSP 进行浮点快速傅立叶变换(FFT),为联系实际应用,使用ADC 对波形发生器进行ADC 采样,然后对ADC 采样结果进行FFT, 与 Matlab 仿真结果进行比较察看最终结果的准确性。会使用到ARMDSP 库文件,以及STM32F30x 的浮点运算单元以及DSP指令等。

模拟ADC采样数据实现FFT

使用Matlab生成AM调制波形

波形公式为:AM_50= sin(2πfc)*(1+50%*sin(2πfm)), 其中fc 为载波频率,fm 为调制波频率,调制比50%。为了使用ADC 采样,将波形进行偏移处理,叠加1.5V 电压,最终波形展开公式如下:

AM_50 = sin(2πfc) + 50%*sin(2πfm))* sin(2πfc) + 1.5

Matlab 程序如下:

x =sin(2*pi*fm*t); % modulation wave

figure;plot(t,x);y =sin(2*pi*fc*t); % carrier wavefigure;plot(t,y);z1 =y.*(1+m1*x) + 1.5; % AM wave with 50% depthfigure; %figure 1plot(t,z1);xlabel('Time');ylabel('Amplitude');title('AM with50% depth');Z1 =z1*4096/3.3; % 12-bit ADC Value

产生波形如下:

图【一】

生成模拟ADC数据,使用STM32F30x进行FFT运算

生成数据存于AM_50_ADC_Data[]数组中,实数转换为复数,进行CFFT 的运算,调用arm_cfft_f32 库函数,1024 点FFT。

/* Real data to magnitudedata */

for(i=0; i {testInput_f32_10khz[i*2+1] =0;testInput_f32_10khz[i*2] = AM_50_ADC_Data[i];}

/* Process the data throughthe CFFT/CIFFT module */

arm_cfft_f32(&arm_cfft_sR_f32_len1024,testInput_f32_10khz, ifftFlag, doBitReverse);

/* Process the data throughthe Complex Magnitude Module forcalculating the magnitude ateach bin */

arm_cmplx_mag_f32(testInput_f32_10khz,testOutput, fftSize);

结果打印并和Matlab计算结果进行比较

为方便显示只取整数部分比较:图【二】为Matlab 输出,图【三】为经过STM32F30x计算后的结果.

图【二】

图【三】

从数据上看Matlab 仿真以及STM32F30x的FFT 两者非常吻合,数据可以直接使用。基于时间数据转换到频域上,理论上直流分量,频率fc处,以及频率fc-fm,fc+fm 处都会有波峰出现,实际看FFT 波形如下:

实际ADC采样并进行FFT操作

使用波形发生器产生50% 调幅波,载波10KHz,调制波1KHz,调制比50%,偏移1.5V。

使用STM32F30x进行ADC 采样,采样结果存于数组,数据导入到Matlab 显示波形如下:

根据ADC采样数据进行FFT 变换,分析结果如下面所示:

结论:

由STM32F30x 的ADC 采样的波形可以完整进行快速傅立叶变换,变化结果符合理论变化预期。并且利用STM32F30x 的FPU 以及DSP 模块方便快速进行变化,给实际应用带来很大便利性。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7680

    浏览量

    344323
  • 模拟电路
    +关注

    关注

    124

    文章

    1482

    浏览量

    101845
  • 傅立叶变换
    +关注

    关注

    3

    文章

    98

    浏览量

    32103

原文标题:【演示示例】STM32F30x ADC 采样的傅立叶变换,建议看看!

文章出处:【微信号:Mouser-Community,微信公众号:贸泽电子设计圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Xilinx快速傅立叶变换接口及仿真测试实验设计

    1 xilinx FFT IP介绍 Xilinx快速傅立叶变换(FFT IP)内核实现了Cooley-Tukey FFT算法,这是一种计算有效的方法,用于计算离散傅立叶
    的头像 发表于 09-28 10:41 3490次阅读
    Xilinx<b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>接口及仿真测试实验设计

    快速傅立叶变换(FFT)算法实验

    本帖最后由 mr.pengyongche 于 2013-4-30 02:23 编辑 快速傅立叶变换(FFT)算法实验一、摘
    发表于 12-21 10:54

    浅懂示波器FFT快速傅立叶变换功能及运用

    变换,是离散傅氏变换快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换
    发表于 01-14 17:00

    如何使用STM32F30x内部的DSP进行浮点快速傅立叶变换

    本文目的是演示如何使用STM32F30x 内部的DSP 进行浮点快速傅立叶变换(FFT),为联系
    发表于 02-24 09:13

    周期信号的傅立叶变换.ppt

    一、虚指数信号和正余弦信号的傅立叶变换 二、一般周期信号的傅立叶变换三、傅立叶系数与傅立叶
    发表于 09-16 08:46 0次下载

    基于FPGA的快速傅立叶变换

    摘要:在对FFT(快速傅立叶变换)算法进行研究的基础上,描述了用FPGA实现FFT的方法,并对其中的整体结构、蝶形单元及性能等进行了分析。
    发表于 06-20 14:13 975次阅读

    1024点FFT快速傅立叶变换

    Xilinx FPGA工程例子源码:1024点FFT快速傅立叶变换
    发表于 06-07 14:13 33次下载

    Xilinx 的IP:1024点FFT快速傅立叶变换

    Xilinx FPGA工程例子源码:Xilinx 的IP:1024点FFT快速傅立叶变换
    发表于 06-07 15:07 51次下载

    如何利用TMS320DSP平台实现实值序列的快速傅立叶变换算法的详细概述

    快速傅立叶变换(FFT)是傅立叶变换(DFT)的有效计算方法,是数字信号处理应用中最重要的工具之一。由于其结构形式良好,FFT是评估数字信号
    发表于 05-04 11:09 5次下载
    如何利用TMS320<b class='flag-5'>DSP</b>平台实现实值序列的<b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>算法的详细概述

    快速傅立叶变换的基本概念及加窗函数的介绍

    4.2 快速傅立叶变换及加窗函数
    的头像 发表于 05-07 06:09 6069次阅读
    <b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>的基本概念及加窗函数的介绍

    如何使用STM32F30x 内部的DSP 进行浮点快速傅立叶变换资料下载

    电子发烧友网为你提供如何使用STM32F30x 内部的DSP 进行浮点快速傅立叶变换资料下载的电
    发表于 04-05 08:57 16次下载
    如何使用STM32F30x 内部的<b class='flag-5'>DSP</b> <b class='flag-5'>进行</b><b class='flag-5'>浮点</b><b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>资料下载

    简述FPGA的快速傅立叶变换

    摘要:在对FFT(快速傅立叶变换)算法进行研究的基础上,描述了用FPGA实现FFT的方法,并对其中的整体结构、蝶形单元及性能等进行了分析。
    的头像 发表于 05-27 11:21 2037次阅读
    简述FPGA的<b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>

    STM32F30x 的ADC 采样的傅立叶变换

    STM32F30x 的ADC 采样的傅立叶变换(理士国际电源技术有限公司)-本文目的是演示如何使用STM32F30x 内部的DSP 进行浮点
    发表于 08-04 17:47 70次下载
    STM32F30x 的ADC 采样的<b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>

    傅立叶变换是怎么变换傅立叶的理解

    关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都让人很难理解太过抽象,尽是一些让人看了就望而生畏的公式的罗列。 要理解
    的头像 发表于 08-25 11:25 4263次阅读

    浅懂示波器FFT快速傅立叶变换功能及运用

    傅氏变换,是离散傅氏变换快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换
    的头像 发表于 11-08 15:01 4224次阅读
    浅懂示波器FFT<b class='flag-5'>快速</b><b class='flag-5'>傅立叶</b><b class='flag-5'>变换</b>功能及运用