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

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

[复制链接]
sfee2002 提问时间:2015-11-21 16:02 /
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, 下载次数: 94, 下载积分: ST金币 -1

评分

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

查看全部评分

收藏 3 评论13 发布时间:2015-11-21 16:02

举报

13个回答
党国特派员 回答时间: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
alvin_ 回答时间:2015-11-21 17:13:47
这个很值得顶,这才叫试用贴呀
Paderboy 回答时间:2015-11-21 18:08:15
多谢分享。。。
STMCU-Logo.png
飞狼老大 回答时间:2015-11-21 22:30:35
支持一下!
liuyu-419812 回答时间:2015-11-22 10:08:57
支持一个,希望楼主继续下去
埃斯提爱慕 回答时间:2015-11-22 22:22:40
提示: 作者被禁止或删除 内容自动屏蔽
逍遥李 回答时间:2015-12-3 10:56:41
楼主有没有DSP配置过程?直接使用的软件DSP吗?L476是不是有硬件DSP外设啊?
潇潇雨歇pku 回答时间:2015-12-3 11:50:53
lz你好,我也用ARM的DSP库,也是用了1024点的fft。
但是发现1024点的fft必须要分配很大的CSTACK才可以(大约要20多kb吧),否则会栈溢出,这样对MCU的RAM容量要求就很高,需要至少32kb。
不知lz有没有碰到同样的问题?有没有什么好的解决办法可以分享一下?
sfee2002 回答时间:2015-12-3 13:52:25
潇潇雨歇pku 发表于 2015-12-3 11:50
lz你好,我也用ARM的DSP库,也是用了1024点的fft。
但是发现1024点的fft必须要分配很大的CSTACK才可以(大 ...

是的,我开始用的是16k的F303,编译提示越界,要用更大的RAM才行
q963258741 回答时间:2018-7-21 22:57:31
请问怎么吧AD加在程序中
q963258741 回答时间:2018-7-22 08:19:53
有几个地方未定义,不知道怎么搞,才学
sfee2002 回答时间:2018-9-11 17:00:45
q963258741 发表于 2018-7-21 22:57
请问怎么吧AD加在程序中

先采样,在fft,不冲突
ruuuby 回答时间:2019-3-15 11:37:17
感谢LZ,正在搞这方面的东西,学习学习

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版