打印
[应用相关]

FFT官方库的使用

[复制链接]
860|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maudlu|  楼主 | 2023-5-31 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FFT官方库的使用准备工作
其中,stm32_dsp.h和table_fft.h两个文件是必须添加的。stm32_dsp.h是STM32的DSP库的头文件。
进行256点的FFT,只需要调用STM32 DSP库函数中的cr4_fft_256_stm32()函数即可。该函数的原型为:
void cr4_fft_256_stm32(void *pssOUT, void *pssIN, uint16_t Nbin);

需要说明的是:按照FFT官方库的说明,pssOUT和pssIN都必须是32位的数据类型,其中高16位存储实部,低16位存储虚部。对于pssIN来说,低16位存储的虚部总是为0。
代码实例
调用FFT官方库的代码为:
//填充数组
for(i=0;i<NPT;i++)
        //这里因为单片机的ADC只能测正的电压 所以需要前级加直流偏执
        //加入直流偏执后,需要在软件上减去2048即一半,达到负半周期测量的目的(需要根据具体情况来进行配置)
        lBufInArray[i] = ((signed short)(adc_buf[i]-2048)) << 16;
       
cr4_fft_256_stm32(lBufOutArray, lBufInArray, NPT);

同时,计算各次谐波幅值的函数为:

void GetPowerMag()
{
    signed short lX,lY;
    float X,Y,Mag;
    unsigned short i;
    for(i=0; i<NPT/2; i++)
    {
        lX  = (lBufOutArray[i] << 16) >> 16;
        lY  = (lBufOutArray[i] >> 16);
        
        //除以32768再乘65536是为了符合浮点数计算规律
        X = NPT * ((float)lX) / 32768;
        Y = NPT * ((float)lY) / 32768;
        Mag = sqrt(X * X + Y * Y) / NPT;
        if(i == 0)
            lBufMagArray[i] = (unsigned long)(Mag * 32768);
        else
            lBufMagArray[i] = (unsigned long)(Mag * 65536);
    }
}


使用特权

评论回复
沙发
benjaminka| | 2023-6-8 13:58 | 只看该作者
在STM32芯片中,可以使用官方提供的库函数进行FFT计算,主要包括CMSIS-DSP库和HAL库。

使用特权

评论回复
板凳
jkl21| | 2023-6-8 16:54 | 只看该作者
使用arm_rfft_fast_init_f32()函数初始化FFT句柄

使用特权

评论回复
地板
albertaabbot| | 2023-6-8 23:12 | 只看该作者
如何使用DSP里面的DSP算法库FFT和IFFT

使用特权

评论回复
5
caigang13| | 2023-6-8 23:14 | 只看该作者
官方的FFT支持的点数只能是固定的

使用特权

评论回复
6
kmzuaz| | 2023-6-10 13:41 | 只看该作者
使用STM32官方提供的DSP库进行FFT

使用特权

评论回复
7
chenjun89| | 2023-6-10 22:45 | 只看该作者
FFT在测量交流信号是有用到。

使用特权

评论回复
8
AloneKaven| | 2023-6-10 22:51 | 只看该作者
albertaabbot 发表于 2023-6-8 23:12
如何使用DSP里面的DSP算法库FFT和IFFT

导入头文件就行了

使用特权

评论回复
9
wilhelmina2| | 2023-6-14 11:20 | 只看该作者
FFT库使用说明,怎么计算频率

使用特权

评论回复
10
dspmana| | 2023-6-14 18:07 | 只看该作者
配置输入和输出缓冲区 根据具体应用需求,配置相应大小和类型的输入和输出缓冲区,例如float或者complex类型的数组。

使用特权

评论回复
11
MessageRing| | 2023-6-14 23:05 | 只看该作者
调用FFT官方库代码就行了

使用特权

评论回复
12
V853| | 2023-6-15 18:24 | 只看该作者
这个库应该是第三方提供的吧。

使用特权

评论回复
13
pmp| | 2023-6-15 22:15 | 只看该作者
怎么调用fft 库函数               

使用特权

评论回复
14
Bowclad| | 2023-6-15 22:39 | 只看该作者
albertaabbot 发表于 2023-6-8 23:12
如何使用DSP里面的DSP算法库FFT和IFFT

下载FFT的官方库

使用特权

评论回复
15
Undshing| | 2023-6-16 23:48 | 只看该作者
可以直接使用官方提供的DSP库

使用特权

评论回复
16
AloneKaven| | 2023-6-17 22:53 | 只看该作者
测量交流信号是用FFT吗?

使用特权

评论回复
17
Jacquetry| | 2023-6-18 22:52 | 只看该作者
官方应该有这个库吧

使用特权

评论回复
18
modesty3jonah| | 2023-6-19 09:31 | 只看该作者
DSP库针对没有fpu的处理器使用来加速的

使用特权

评论回复
19
jonas222| | 2023-6-19 10:39 | 只看该作者
执行效率确实非常高效               

使用特权

评论回复
20
cashrwood| | 2023-6-19 10:49 | 只看该作者
通过输出缓冲区获取FFT计算的结果,例如频率谱、幅度谱、相位谱等。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

1343

帖子

0

粉丝