基于STM32F4的FFT(快速傅里叶变换)求信号幅值,频率,相位差

news2024/12/26 11:32:55

基于STM32F4的FFT(快速傅里叶变换)求信号幅值,频率,相位差

一。FFT原理介绍

快速傅里叶变换(Fast Fourier Transform,FFT)是一种用于高效计算傅里叶变换的算法。傅里叶变换是一种信号处理技术,将信号从时域(时间域)转换到频域(频率域),它可以将一个信号分解成不同频率的成分,因此在信号处理、通信、图像处理等领域有着广泛的应用。FFT 算法的核心思想是将一个长度为 N 的离散序列的 DFT(离散傅里叶变换)分解成若干个长度为 N/2 的子问题。通过递归地将原问题分解成规模更小的子问题,然后再合并子问题的结果,最终得到整个序列的 DFT。FFT 算法的时间复杂度为 O(N log N),相比传统的直接计算 DFT 的算法(时间复杂度为 O(N^2)),FFT 在处理大规模数据时具有明显的效率优势。这使得 FFT 成为了数字信号处理、频谱分析等领域中的核心算法之一。FFT 算法的原理可以用到多种变种上,如 Cooley-Tukey FFT 算法是最著名的一种,它利用了傅里叶变换的周期性和对称性,将 DFT 分解成长度为 N/2 的子问题。通过反复应用这种分解和合并的思想,最终实现了快速的傅里叶变换。除了 Cooley-Tukey FFT 算法外,还有其他的 FFT 算法,例如基于拉德姆赫-哈根(Rader)方法的算法,用于特定长度的序列,以及 Bluestein FFT 算法,用于非 2 的幂次长度的序列等等。这些算法在实际应用中根据不同的场景和需求选择使用。有疑问可联系微信:wpt666aaa qq:2036795517 交流。

二。装置的介绍

犹记得那天风很大,头发被吹掉了几根,依旧倔强的敲出了几百行代码,为此世界第一伟大的FFT代码,被我用STM32F4给实现了,下面允许我介绍一下用法以便各位仁兄参考:

采样点数是4096(自己可以调整)
采样频率自己根据自动重装载值fft_arrfft_psc计算和调整
在这里插入图片描述

信号的两个输入通道(可由信号发生器产生从而进行测试,也可直接接入自己想要测量的信号)
PA6对应的adc1通道一,PA5对应的adc2通道2
在这里插入图片描述

关键变量 直流分量 频率 幅度 相位(难点在于对3个变量的精确的求解)
在这里插入图片描述
在这里插入图片描述

变量的串口端显示:(当然也可接入OLED屏幕来显示我们获取到的参数,我这里OLED 屏幕是用的4针,IIC协议)
在这里插入图片描述
在这里插入图片描述

核心算法部分,我也是似懂非懂,建议在复盘一下数学
在这里插入图片描述

三。结果展示

我本人是用的信号发生器来验证的我的代码的准确性,其中两个信号的相位差我是可以控制的,我这里设置的是30度,频率设置记得一定要一致,幅值设置记得不要超过3.3V不然会烧掉开发板。
1.这是我用来测试的两个信号
在这里插入图片描述
2.这是我用的开发板(这里如果是做课设或者毕设的,建议不要买整个板子,只需要在淘宝收索STM32F407ZGT6把这个芯片买下来即可,剩余的可联系我帮你解决,微xin: wpt666aaa qq: 2036795517)
在这里插入图片描述
3.可以看到测试结果比较精准:幅值,频率,直流分量,相位差均正确
在这里插入图片描述
4.占用内存展示,STM32F407ZGT6这个芯片是完全够用了
在这里插入图片描述

四。最后的最后

如果各位仁兄有什么问题可直接加我联系方式微信:wpt666aaa qq:2036795517.我是只发布高质量文章的技术博主:李白有点儿黑另外,我在B站针对于此项目整了一个视频演示帮助大家参考,链接我就放在下方了
https://www.bilibili.com/video/BV1yx421Z7Wm/?vd_source=f367fce8d1af1d597a20d607088ec8bb#reply210947598704
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1489260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三百八十一回

文章目录 1. 概念介绍2. 修改方法 015buttonStyle.png2.1 修改形状2.2 修改颜色2.3 修改位置 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何创建以图片为背景的页面"相关的内容,本章回中将介绍如何修改按钮的形状.闲话休提,让我们一起T…

相机,棱镜和光场

一、成像方法 Imaging Synthesis Capture 1.Synthesis(图形学上)合成:比如之前学过的光线追踪或者光栅化 2.Capture(捕捉):把真实世界存在的东西捕捉成为照片 二、相机 1.小孔成像 利用小孔成像的相…

做测试还是测试开发,选职业要慎重!

【软件测试面试突击班】2024吃透软件测试面试最全八股文攻略教程,一周学完让你面试通过率提高90%!(自动化测试) 突然发现好像挺多人想投测开和测试的,很多人面试的时候也会被问到这几个职位的区别,然后有测…

前端面试拼图-前端基础(二)

摘要:最近,看了下慕课2周刷完n道面试题,记录下... 1. offsetHeight scrollHeight clientHeight 区别 计算规则: offsetHeight offsetWidth : border padding content clientHeight clientWidth: padding content scrollHeight…

CIP通讯介绍(欧姆龙PLC)

什么是CIP CIP通信是Common Industrial Protocl(CIP)的简称,它是一个点到点的面向对象协议,能够实现工业器件(传感器,执行器)之间的连接,和高等级的控制器之间的连接。目前,有3种网络DeviceNet…

图像剪辑|Linux|ImageMagick的初步使用--素描,毛玻璃等特效

前言: ImageMagick在图像剪辑领域的地位基本等同于FFmpeg,和FFmpeg基本一样,在Linux下使用此工具的原因是该工具可以使用shell脚本批量剪辑,在Windows下就会比较麻烦一些了 那么,本文主要是记录一下ImageMagick的一些…

【python】python用户管理系统[简易版](源码+报告)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

VScode 单步断点调试Nodejs方法总结

目录 方法一 方法二 方法三 方法一 使用vscode开发nodejs程序,能够启动单步调试模式,在指定代码处添加断点,像chrome、firefox浏览器上一样进行JavaScript的调试。 新建一个nodejs的工程,编写代码后,配置代码调试的步骤: 1、切换到代码调试界面 2、界面提示,新建一…

rust多个mod文件引用和文件夹mod使用注意事项

如果mod文件都在同一级目录,则直接使用就可以,因为rust文件都是一个隐藏的mod,但是如果mod文件在另外一个目录下面,就需要在目录下面声明一个mod.rs文件,这样才能将那个目录识别为一个mod,可以在mod.rs里面…

数据结构学习(三)链表

链表 1. 概念 反转链表 给出3个指针,一个cur,用于遍历链表中的每个节点,一个prev,用于保存cur指向的节点的上一个节点地址,还有一个after,用于保存cur指向的节点的下一个节点地址,链表操作遵循…

linux 交叉编译curl(+openssl)

一、交叉编译openssl 参考博客:点击跳转 二、交叉编译curl 1、源码下载 地址:点击跳转 2、配置 CPPFLAGS"-I/home/gui/gui/openssl/build_arm/include" LDFLAGS"-L/home/gui/gui/openssl/build_arm/lib" LIBS"-ldl" \ …

webpack基础配置及使用

webpack是什么 是一个现代 JavaScript 应用程序的静态模块打包器。当webpack 处理应用程序时,它会递归地构建一个依赖关系图 ,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle 。主要有 五个核心概念&#xff1a…

数据服务安全的重要性

数据服务安全在当今信息化社会显得尤为重要。随着大数据、云计算、人工智能等技术的飞速发展,数据已经成为企业和组织的核心资产,数据服务安全也面临着前所未有的挑战。本文将从数据服务安全的重要性、常见威胁、防护策略以及未来发展趋势等方面进行探讨…

【学位论文】上海交通大学 研究生学位论文 本地保存

上海交大研究生学位论文网:http://thesis.lib.sjtu.edu.cn/ (只能校内访问或SJTU VPN访问) 如果希望下载论文,需要参考:https://github.com/olixu/SJTU_Thesis_Crawler 安装过程 安装过程的几个坑: &a…

day04-Maven-SpringBootWeb入门

文章目录 01. Maven1.1 课程安排1.2 什么是Maven1.3 Maven的作用1.4 Maven模型1.5 Maven仓库1.6 Maven安装1.6.1 下载1.6.2 安装步骤 2 IDEA集成Maven2.1 配置Maven环境2.1.1 当前工程设置2.1.2 全局设置 2.2 创建Maven项目2.3 POM配置详解2.4 Maven坐标详解2.5 导入Maven项目 …

带使能控制的锂电池充放电解决方案

一、产品概述 TP4594R 是一款集成线性充电管理、同步升压转换、电池电量指示和多种保护功能的单芯片电源管理 SOC,为锂电池的充放电提供完整的单芯片电源解决方案。 TP4594R 内部集成了线性充电管理模块、同步升压放电管理模块、电量检测与 LED 指示模块、保护模块…

失败与坚持

失败 很多计划和目标由于个人能力等问题,都失败了。 如果将最近十年规划的目标算一个总评的话,接近97%的目标都没有实现。 这主要原因就是脱离了自身实际制定了一些超出自身能力所及的目标,当然也有一些客观因素。 坚持 有擅长做的事情&am…

Redis集群(主从)

1.主从集群 集群结构: 一.单机安装redis 1.上传压缩包并解压,编译 tar -xzf redis-6.2.4.tar.gz cd redis-6.2.4 make && make install 2.修改redis.config的配置并启动redis # 绑定地址,默认是127.0.0.1,会导致只能在本地访问。…

技术面没过,居然是因为没用过Pytest框架

01 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 简单灵活,容易上手,文档丰富; 支持参数化,可以细粒度地控制要测试的测试用例; 能够支持简单的单元测试和复杂的…

什么是网络安全、信息安全、计算机安全,有何区别?

这三个概念都存在,一般人可能会混为一谈。 究竟它们之间是什么关系?并列?交叉? 可能从广义上来说它们都可以用来表示安全security这样一个笼统的概念。 但如果从狭义上理解,它们应该是有区别的,区别在哪呢&…