你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 6010|回复: 13

[STM32L476] 【NUCLEO-L476RG开发】M4核dsp库,fft的测试

[复制链接]

8

主题

347

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-9-1
发表于 2015-11-21 16:02:41 | 显示全部楼层 |阅读模式
Stm32L467的板子也拿到了一段时间了,一直不知拿它干些什么。开始想驱动个IO,串口或spi…….,后来感觉这些任何单片机都带,基本又是大同小异。就想还是试一下M4核特有的东西。我们知道M4核包含有FPU单元,单精度的浮点运算比M3会快很多。M4核还具有部分DSP指令,软件同时也提供了DSP库,我们可以直接调用。于是我就利用软件中的DSP库对FFT进行了测试。源码附件在最后,欢迎大家下载测试


步骤如下:
1        建一个1024点的数组,然后用DSP库中的函数,生成一组正弦函数,模拟采样数据。
       testInput_f32_10khz =((1.2f)*arm_sin_f32(2*3.1415926f*50*i/fftSize)+1) +(arm_sin_f32(2*3.1415926f*100*i/fftSize));
        数据在testInput_f32_10khz[]中保存


2        对这组数据进行FFT计算。并观察计算结果
      计算的函数为arm_rfft_fast_f32(&S, testInput_f32_10khz, (float32_t*)(&(FftOut_f32.Buf[0])), ifftFlag);
      结果放在FftOut_f32.Buf[]中。这个是复数的,要找到频谱必须求模。(为什么要求模请自己看看数字信号处理)
   下图 中前三个图


3        对FFT计算出的结果再用DSP库中的函数进行求模运算。并观察运算结果。
      arm_cmplx_mag_f32((float32_t *)(&(FftOut_f32.Buf[0])), testOutput,fftSize)
      求模的结果放在testOutput[]数组中。
   下图 中后三个图

从图中可以看到模值最大的是第一个,这是FFT特点决定,然后是在50这个点和100这个两个点,我们生成这组数据时就是模拟50Hz100Hz((1.2f)*arm_sin_f32(2*3.1415926f*50*i/fftSize)+1) +(arm_sin_f32(2*3.1415926f*100*i/fftSize));)同时50Hz的幅值大于100Hz的。 Fft在实际中用处很多, Fft要用到实际的应用中还有很多要进行设计和控制(比如采样周期控制等)。

这里只是测试一下,抛砖引玉,不对的地方欢迎大家批评吐槽。





ZHENGTI.jpg
50FFT.jpg
100FFT.jpg
MZHENGTI.jpg
50FFTM.jpg
100MFFT.jpg

STM32L476_DEMOfft.rar

下载

1.93 MB, 下载次数: 92, 下载积分: ST金币 -1

评分

参与人数 1ST金币 +10 收起 理由
沐紫 + 10

查看全部评分

回复

使用道具 举报

76

主题

5715

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-10-15
发表于 2015-11-21 16:54:27 | 显示全部楼层
学习之。。。 null - 副本 - 副本 - 副本.png null - 副本 - 副本 (2).png null - 副本 - 副本 (3).png null - 副本 - 副本.png null - 副本 (2) - 副本.png null - 副本 (2).png null - 副本 (3).png null - 副本 (4).png null - 副本.png null.png
回复 支持 反对

使用道具 举报

8

主题

407

回帖

0

蝴蝶豆

高级会员

最后登录
2016-11-24
发表于 2015-11-21 17:13:47 | 显示全部楼层
这个很值得顶,这才叫试用贴呀
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2015-11-21 18:08:15 | 显示全部楼层
多谢分享。。。
STMCU-Logo.png
回复 支持 反对

使用道具 举报

1

主题

115

回帖

0

蝴蝶豆

高级会员

最后登录
2017-10-11
发表于 2015-11-21 22:30:35 | 显示全部楼层
支持一下!
回复 支持 反对

使用道具 举报

0

主题

165

回帖

0

蝴蝶豆

金牌会员

最后登录
2018-9-10
发表于 2015-11-22 10:08:57 | 显示全部楼层
支持一个,希望楼主继续下去
回复 支持 反对

使用道具 举报

41

主题

2476

回帖

282

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2015-11-22 22:22:40 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

15

主题

571

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-12-3
发表于 2015-12-3 10:56:41 | 显示全部楼层
楼主有没有DSP配置过程?直接使用的软件DSP吗?L476是不是有硬件DSP外设啊?
回复 支持 反对

使用道具 举报

15

主题

206

回帖

6

蝴蝶豆

金牌会员

最后登录
2018-9-26
发表于 2015-12-3 11:50:53 | 显示全部楼层
lz你好,我也用ARM的DSP库,也是用了1024点的fft。
但是发现1024点的fft必须要分配很大的CSTACK才可以(大约要20多kb吧),否则会栈溢出,这样对MCU的RAM容量要求就很高,需要至少32kb。
不知lz有没有碰到同样的问题?有没有什么好的解决办法可以分享一下?
回复 支持 反对

使用道具 举报

8

主题

347

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-9-1
 楼主| 发表于 2015-12-3 13:52:25 | 显示全部楼层
潇潇雨歇pku 发表于 2015-12-3 11:50
lz你好,我也用ARM的DSP库,也是用了1024点的fft。
但是发现1024点的fft必须要分配很大的CSTACK才可以(大 ...

是的,我开始用的是16k的F303,编译提示越界,要用更大的RAM才行
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版