OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 38215|回复: 22

STM32F407 DSP库的使用 2048点FFT ADC+DMA

[复制链接]

2

主题

16

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2012-11-22
在线时间
1 小时
发表于 2013-8-15 08:34:08 | 显示全部楼层 |阅读模式

      基于STM32F407VGT6,是官方的discovery板子。

      官方给的DSP库中有不少现成的函数,包括复数函数,滤波函数等等,都是对FPU运算优化过的,网上说可以比普通的浮点运算快10倍至百倍,大家可以试一试。

       这里上传我的一个工程,基于IAR EWARM6.4 ,主要功能是40KHz的AD采样,数据由DMA传输至数组,调用库中函数进行FFT变换,我对结果进行了简单处理,大家在仿真界面下添加FFT.c中的graphic数组,graphic[0]到graphic[15]代表了0~20Khz的频率范围,用函数信号发生器作为输入信号,效果不错。

以下是工程
1、编译会有很多整型赋值给浮点的警告,不用理会,因为ADC采样值是整型,而做FFT需使用浮点
2、如果编译说找不到文件,从工程中重新添加即可。

STM32F407_FFTDSP库_ADC+DMA.rar

3.54 MB, 下载次数: 45186

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-9-18
在线时间
0 小时
发表于 2014-9-18 19:03:13 | 显示全部楼层
原子哥,我最近也用DSP库进行FFT运算,是用ADC+TIM+DMA,为什么我算出来后用matlab画出幅频响应图,为什么和直接用matlab对采样序列进行FFT变换不一样呢?
我用的是arm_cfft_radix2_f32()对采样序列进行FFT,然后用arm_cmplx_mag_f32()算出幅值,将它用matlab画出来的时候,对应的频率不一样,比如我输入的是75hz的正弦信号,但幅频特性显示的是在150hz处有最大幅度,这是为什么啊?
回复 支持 1 反对 0

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2012-11-22
在线时间
1 小时
 楼主| 发表于 2013-8-15 08:37:22 | 显示全部楼层
再奉上一个DSP库使用说明

STM32F4XX固件库之DSP库的说明.pdf

92.13 KB, 下载次数: 8390

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2013-8-15 10:20:30 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

8

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2013-7-16
在线时间
0 小时
发表于 2013-8-15 11:03:10 | 显示全部楼层
回复【楼主位】iyzyh:
---------------------------------
楼主下载不了啊
STM32 学习中
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2012-11-22
在线时间
1 小时
 楼主| 发表于 2013-8-15 12:13:39 | 显示全部楼层
回复【4楼】xc1989:
---------------------------------
我刚试了一下,可以呀~
回复 支持 反对

使用道具 举报

8

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2013-7-16
在线时间
0 小时
发表于 2013-8-15 12:15:51 | 显示全部楼层
回复【5楼】iyzyh:
---------------------------------
0.48 KB/S 附件1.。。。。。。。
STM32 学习中
回复 支持 反对

使用道具 举报

8

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2013-7-16
在线时间
0 小时
发表于 2013-8-15 12:16:09 | 显示全部楼层
回复【5楼】iyzyh:
---------------------------------
我去实验室试试吧 应该不是网速问题
STM32 学习中
回复 支持 反对

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
发表于 2013-11-7 11:05:18 | 显示全部楼层
回复【楼主位】iyzyh:
---------------------------------
效果不错是看着不错,还是经过公式算过,实际的数据与理论比较符合?
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2012-11-22
在线时间
1 小时
 楼主| 发表于 2013-11-12 09:53:58 | 显示全部楼层
回复【8楼】KC_CEC:
---------------------------------
拿函数信号发生器频率由低到高变化,由频率算一下该落到graphic[16]所分成的15个区间中的哪一个,再看一下实际仿真中数组的峰值在哪,在这个精度下我测得是吻合的~理论上数组分得越细误差越小,不过实际精度到底会有多少我没有测过。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-8-16
在线时间
0 小时
发表于 2014-8-16 09:58:45 | 显示全部楼层
楼主 删掉自己的帖子吧 看了一下程序 问题大大的 你根本没搞清楚FFT  基4 FFT 是基2FFT所需要内存空间的两倍  你这个只是1024点的FFT 何谈2048  还有你DMA到输入数组之间的数据传递 没有补零
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2013-11-2
在线时间
2 小时
发表于 2014-9-2 11:29:40 | 显示全部楼层
回复【10楼】wlf19890312:
---------------------------------
大神你修改修改,贡献出来看看啊,别光说啊,呵呵,期待哦
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-8-16
在线时间
0 小时
发表于 2014-9-2 15:47:15 | 显示全部楼层
回复【11楼】zhanyanqiang:
---------------------------------
其实  我也不会  我总觉得 这玩意 应该再说的详细一点  不要曲解官方的 意思  事实上 补零 之后 确实能够增加精度  我的东西 只是限制于成本的问题  还用不了 像STm32 这么高级的东西
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-9-3
在线时间
0 小时
发表于 2014-9-4 14:24:34 | 显示全部楼层
谢谢楼主分享~~
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-9-18
在线时间
0 小时
发表于 2014-9-18 19:04:30 | 显示全部楼层
楼主求指教。。这个问题纠结了好久了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-6-30
在线时间
0 小时
发表于 2015-7-6 13:16:07 | 显示全部楼层
谢谢分享谢谢分享谢谢分享谢谢分享
回复 支持 反对

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-11-21
在线时间
42 小时
发表于 2016-8-17 18:42:59 | 显示全部楼层
正要用一下
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2015-10-4
在线时间
15 小时
发表于 2017-8-5 17:01:13 | 显示全部楼层
你这是1024点的FFT哦
回复 支持 反对

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7371
金钱
7371
注册时间
2016-11-30
在线时间
632 小时
发表于 2018-1-22 18:20:00 | 显示全部楼层
mark,学习!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2020-4-25
在线时间
1 小时
发表于 2020-5-27 23:09:29 | 显示全部楼层
感谢,最近项目需要,这在学习这块
回复 支持 反对

使用道具 举报

2

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
429
金钱
429
注册时间
2019-5-15
在线时间
52 小时
发表于 2020-9-24 17:19:21 | 显示全部楼层
不错,顶一个!我有一个问题,我的4096点的FFT运算需要4.8秒,主频跑168M,不知道啥原因。
回复 支持 反对

使用道具 举报

2

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2020-3-24
在线时间
19 小时
发表于 2020-10-23 15:49:45 | 显示全部楼层
虚部需要全部补零的,我刚接触这个东西,不过可以参考一下。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2021-8-25
在线时间
1 小时
发表于 2021-8-25 10:27:54 | 显示全部楼层
谢谢学习下,最近要采样计算电压和电流的相位差
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 02:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表