0.前言

我是个小菜鸡,最近需要用fft,就学习使用了一下,感觉还挺好玩的,文章内容可能有描述不准确或者错误的地方,希望读者带着辩证的眼光阅读,如果方便指出错误,那就很感谢了。

本文主要关注fft实际应用,对于如何实现fft,和原理部分没有设计,因为我不会,哈哈哈。

1.原理:

FFT后的物理意义_神马观止-CSDN博客_fft的意义

CMSIS的DSP库手册下载地址(F4):

STSW-STM32065 - STM32F4 DSP and standard peripherals library - STMicroelectronics

DSP库API手册:

CMSIS DSP Software Library (arm-software.github.io)

2.为什么需要fft?

  1. 分解信号,测谐波
  2. 测波形频率和幅值很方便,精度也更高

3.什么是fft?

快速傅里叶算法,(DFT的快速算法),可以把周期信号从时域分解到频域

4.怎么用?

使用fft时有几个概念需要了解:

(1)FFT参数

频谱的分辨率:Fs/N Fs:采样频率 N:fft采样点数

所以需要提高精度,可以降低采样频率和提高fft点数。

频谱宽度:Fs/2/k k:降采样率

(2)怎么算频率和幅值

如果进行4096点FFT运算的话

频率:数据输出4096个点。,第一个点代表0hz信号的幅值,也就是直流分量,后面的点的频率=点数*分辨率。fft输出是对称的,所以≥N/2的点都没有实际意义。

幅值:直流分量/N,谐波分量/(N/2)。

5.stm32f4程序实现

程序思路:

TIM2(TRGO信号)触发 ——> ADC采样(开启DMA传输) ——> FFT运算、和数据处理(在DMA传输完成中断中)

TIM2触发是为了精准控制adc采样频率。这里有一个信号同步的问题,就是可能分辨率与采样的信号不能准确的对应上(比如采样频率是1khz,然后分辨率是9hz,1000/9不是整数。这样在频谱图上就没有一个整数点能对应1khz,然后数据就会没那么准确),这个好像就是叫频谱泄露

ADC采集应该都会吧。。。要注意adc采集f>tim2触发f(更新中断),不然可能会出问题。

FFT运算

/* Process the data through the CFFT/CIFFT module */
arm_cfft_f32(&arm_cfft_sR_f32_len4096, fft_Input_f32, ifftFlag, doBitReverse);
/* Process the data through the Complex Magnitude Module forcalculating the magnitude at each bin */
arm_cmplx_mag_f32(fft_Input_f32, fft_Output, fftSize);
/* Calculates maxValue and returns corresponding BIN value */
arm_max_f32(fft_Output, fftSize, &maxValue, &maxIndex);

直接使用的官方库的例子,在下载好的库的这个目录下:

STM32F4xx_DSP_StdPeriph_Lib_V1.8.0/Libraries/CMSIS/Documentation/DSP/html/arm_fft_bin_example_f32_8c-example.html

stm32f4进行fft运算相关推荐

  1. STM32F4使用FPU+DSP库进行FFT运算的测试过程一

    测试环境:单片机:STM32F407ZGT6   IDE:Keil5.20.0.0  固件库版本:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0 第一部分:使用源码文件的方式,使 ...

  2. 【STM32】STM32F4调用DSP库实现FFT运算

    写在前面 最近在整理之前的stm32笔记,打算把一些有价值的笔记发到CSDN分享一下. 奎斯特定理 在进行模拟/数字信号的转换过程中,当采样频率F大于信号中最高频率 fmax 的 2 倍时(F> ...

  3. FFT运算的加深理解——FFT的增益

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FFT运算的加深理解--FFT的增益 前言 FFT的增益 前言 FFT的一些概念一直迷惑了好多年,包括增益.频谱泄露.加窗.补零.栅栏 ...

  4. C语言使用CUDA中cufft函数做GPU加速FFT运算,与调用fftw函数的FFT做运算速度对比

    目录 任务介绍 环境所需相关软件下载与安装 C语言:不调用库的GPU加速FFT代码 C语言:调用fftw库的未使用GPU的FFT代码 C语言:调用cufft库的GPU加速FFT gnuplot安装画图 ...

  5. 华大半导体HC32F4A0笔记(五),使用CMSIS-DSP库进行FFT运算

    一.开启FPU功能 点这个麻将牌四筒,展开CMSIS,把DSP勾了. 点开后 然后点这个锤子 No Auto Includes的勾不要打,让它自动include,因为CMSIS-DSP库在KEIL的安 ...

  6. 数字信号处理——FFT运算模块设计(2)

    目录 引言 设计 验证 引言 蝶形运算是FFT 运算单元的基本结构,本文就主要实现FFT蝶形运算(基2DIT-FFT)模块的功能,并进行验证. 设计 直接上代码,废话就不多了,注释我写的很详细~~ 有 ...

  7. DFT与FFT运算效率的比较

    文章目录 一,运算量的比较 二,程序运算时间比较 一,运算量的比较 N点DFT共需要N^ 2次复数乘法和N(N-1)次复数加法,当N很大时,计算量很大. N点FFT, N = 2 M N=2^M N= ...

  8. 利用Fluent的FFT运算求得频谱的总结

    利用Fluent的FFT运算求得频谱的总结 先在Fluent的菜单中选取Surface-Point 在模型中选取监测点,注意:鼠标右键点击是选取监测点,也可以直接输入坐标: https://wenku ...

  9. 基于 NXP iMX8X 测试 GPU FFT 运算

    By Toradex胡珊逢 1). 简介 伴随着 4G 网络的大范围覆盖,已经即将到来的 5G 网络,边缘计算越来越多地开始进入人们的视野.相比于云计算的云端集中处理,边缘计算能够就地进行复杂数据的计 ...

最新文章

  1. android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
  2. ASP.NET应用程序
  3. Web控件文本框Reset的功能
  4. CSS3 选择前几个元素 选择后几个元素等问题
  5. Java入门知识,写一个最简单java程序
  6. 德国 IT 薪酬大揭秘!
  7. python面对对象实验_实验题目:python面向对象程序设计
  8. UGUI的image
  9. matlab meshlab,MeshLab下载
  10. 小园丁与老司机_疲倦的园丁
  11. virtualbox硬件加速_虚拟机安装后必做的3项设置,解决运行卡慢问题,提速十倍!...
  12. 成都盛迈坤电商:评价怎么有效回复
  13. 锐捷 linux无法上网,通过锐捷认证了,为什么还不能上网?
  14. vue项目中table表格固定表头和首尾列
  15. JMF(Java多媒体框架)资料汇总
  16. 新手如何看k线(图)
  17. easypermission坑_Android 权限管理(原生、EasyPermissions、RxPermissions)-阿里云开发者社区...
  18. 黑苹果 OC引导 “联想+” 主题
  19. spring-上手spring
  20. Google“窃取”内容渠道控制权?

热门文章

  1. 三星ODIN刷机包的修改
  2. Python爬虫入门教程【18】: 36氪(36kr)数据抓取 scrapy
  3. vue-router.esm-bundler.js?6c02:71 [Vue Router warn]: No match found for location with path
  4. 用Python和OpenCV库实现识别人物出现并锁定
  5. win10无法打开计算机上的组策略对象,win10系统无法打开组策略编辑器的具体办法...
  6. C++学习笔记之模板篇
  7. ubuntu1404 安装php5.6-fpm
  8. Android平板如何玩windows,Android/Win 8都能玩!浅析双系统平板
  9. 洛谷 P2534 [AHOI2012]铁盘整理
  10. 个人电影网站web网页设计制作—— 影视公司5页 DIV+CSS制作 浮动布局