stm32f4进行fft运算

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

  • 10
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
内容摘要: 本设计是基于 本设计是基于 Cortex-M4 内核 的 STM32的数字示波器,使用主控芯 片为 STM32F439,主频 180M,外部扩展的 16MB的 FLASH。本设计主要由三大 本设计主要由三大 部分组成。第一大是 硬件 部分:芯片内有三个置 ADC来进行信号采样,主 控外接一个 800*480的 TFTLCD显示屏 来显示待测信号; 来显示待测信号; 第二大部分是 显示部分 部分 :该设计使用了 Seagger公司的 公司的 eMwin作为显示 输入 插件,通过该可以实 时的显示波形,并且可以通过触摸键盘进行 交互 操作;第三部分则是数据处理的 一 些算法:本设计在内 s部有 N=512的 FFT算法、基于线性插值的 算法、基于线性插值的 时基变换递归 算法、递推平均滤波等用来处理采样数据。 该设计 实现了常规双通道示波器的 XY/YT显示方式, 显示方式, 采样频率达到 3.2MS/s,带宽 300KHz,在不开启 FFT功能时 功能时 FPS为 0.41,开启时 为 0.8左右, 能很好的 实时 显示出外部的函数发生器输入正弦波、方锯齿斜白噪声 等测试 信号,并且可以实时显示出 FFT曲线, 可以根据输入信号频率手动调节采 样频率, 内有 统计算法可以实时得到并显示电平信号的均值、 有效峰频率等物理量, 值得一提的是信号 频率的计算是基于 FFT算法得到的,在该设 算法得到的,在该设 计的带宽内失真 率不会超过 2%,误差较 小。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值