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

查看: 6042|回复: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版