STM32 实数FFT 极速配置

news/2024/10/30 13:25:37/

想要进行FFT操作就得配置DSP环境,操作如下
STM32 keil极速配置DSP环境
关于FFT,先上操作再讲含义

操作

添加定义

#define fftsize  256   //对256个数据进行FFT
#define ifftFlag 0float32_t testInput_f32[256]={0};   
float32_t testOutput_f32[256]={0};			
float32_t testOutputMag_f32[256]={0};

while循环代码

  while (1){HAL_Delay(1000);HAL_GPIO_WritePin(Start_GPIO_Port,Start_Pin,GPIO_PIN_RESET);HAL_Delay(100);HAL_GPIO_WritePin(Start_GPIO_Port,Start_Pin,GPIO_PIN_SET);HAL_SPI_Receive(&hspi1,(uint8_t *)data2,260,0xff);
//SPI接收数据for(int i=2;i<258;i++){testInput_f32[i-2]=data2[i]*5.0/4096;}	
/*---------------------FFT----------------------------- */	arm_rfft_fast_instance_f32 d;  arm_rfft_fast_init_f32(&d, fftsize); arm_rfft_fast_f32(&d, testInput_f32, testOutput_f32, ifftFlag); arm_cmplx_mag_f32(testOutput_f32, testOutputMag_f32, fftsize);for(int i=0;i<128;i++){printf("%f\r\n",testOutputMag_f32[i]);}	/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

含义


#define fftsize  256   //对256个数据进行FFT
//0正变换  1逆变换
#define ifftFlag 0//定义结构体
arm_rfft_fast_instance_f32 d;     
//初始化
arm_rfft_fast_init_f32(&d, fftsize); 
//进行快速傅里叶变换
arm_rfft_fast_f32(&d, testInput_f32, testOutput_f32, ifftFlag); 
//testInput_f32为输入的数据
// testOutput_f32 变换后生成复数域,即1实数1虚数  总数还为256//求模值,最后生成一半的点(128)
arm_cmplx_mag_f32(testOutput_f32, testOutputMag_f32, fftsize);

对方波进行FFT得到如下图像
数据含直流分量

在这里插入图片描述
在这里插入图片描述
横坐标 => 每一横坐标点代表 F S N / 2 \frac{F_S}{N/2} N/2FS的频率
比如采样率为256Hz,N为256个点,横坐标的分辨率为2Hz


http://www.ppmy.cn/news/520364.html

相关文章

STM32 FFT算法实现

DSP 库运行环境搭建 在 MDK 里面搭建 STM32F4 的 DSP 运行环境(使用.lib 方式)是很简单的&#xff0c;分为 3 个步骤&#xff1a; 1&#xff0c; 添加文件。 首先&#xff0c;我们在例程工程目录下新建&#xff1a;DSP_LIB 文件夹&#xff0c;存放我们将要添加的文件&#xff…

STM32+CubeMX 通过RMS和FFT进行波形识别

波形识别 本文所展示的程序可以用于分辨正弦波、三角波、方波三种波形。 文章目录 波形识别思路可以判断波形的两个特点时域方面频域方面 外设配置 & DSP库配置代码部分串口重定向时域部分变量定义ADC采集求最大值&#xff0c;最小值&#xff0c;幅值取出波形的一个周期求…

STM32 FIR滤波器使用要点,STM32 DSP篇

1.综述 STM32搭配的CMSIS的DSP库已经写好了FIR&#xff0c;我们做的就是用好用稳定&#xff01; 2.使用流程 2.1使用MATLAB的Filter Designer生成滤波器的参数&#xff08;直接在MATLAB命令中输入filterDesigner即可调出此工具&#xff0c;配置好参数后&#xff0c;选择Targ…

【STM32F407的DSP教程】第30章 STM32F407复数浮点FFT(支持单精度和双精度)

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第30章 STM32F407复数浮点FFT&#xff08;支持单精度和双精度&#xff09; 本章主要讲解复数浮点FTT&#xff0c;支持单精度和双精度。 目录 30.1 初学者重要提示 30.2 …

C嵌入汇编之vld1.f32和vst1.f32指令理解

想完成类似与memcpy&#xff0c;使用arm的neon指令完成&#xff0c;第一次代码 关键点 第一点&#xff1a; add %0,%0,#32&#xff0c;表示每次移动32/4&#xff1d;&#xff18;个float 第二点&#xff1a; subs r0,r0,#1才能改变状态标志位&#xff0c;sub不行 第三点&a…

%.2f

% .2f 是一个格式化字符串&#xff0c;用于在 Python 程序中格式化浮点数。 其中&#xff0c;% 表示这是一个格式化字符串&#xff0c;.2 表示保留两位小数&#xff0c;f 表示这是一个浮点数。 例如&#xff0c;在 Python 中可以使用如下代码将一个浮点数格式化为字符串&#x…

NEON 常用函数讲解

目录 一、基本的加载存储操作 1. vld1q_f32 2.vst1q_f32 3.vld2q_f32 4.vst2q_f32 5.vld3q_f32 6.vst3q_f32 7.vld4q_f32, vst4q_f32 二、特殊操作 1.vdupq_n_f32 2.vzipq_f32 3.vuzpq_f32 4.vcombine_f32 5. vget_low_f32 6. vget_high_f32 7. vtrnq_f32 8. v…

【电赛仪器仪表】基于MATLAB的数字滤波器设计与ARM官方DSP库的结合

主要内容 Ⅰ. 数字滤波器基础知识1.数字滤波器的概念2.数字滤波器的分类3.数字滤波器的技术指标 Ⅱ.使用MATLAB软件设计两类数字滤波器1.FIR滤波器1)窗函数简介2)filterDesigner使用 2.IIR滤波器 Ⅲ.数字滤波器与官方DSP库结合使用1.DSP库的安装使用2.DSP库滤波器函数介绍1)FIR…