GD32E103移植stm32 fft函数

2022-07-27,,,

文章目录

  • 前言
  • 一、移植fft函数后占用空间对比
  • 二、代码实现
    • 1.GD32代码
    • 2.matlab代码
  • 总结

前言

GD32E103移植stm32 fft函数
void cr4_fft_1024_stm32(void *pssOUT, void *pssIN, uint16_t Nbin);


一、移植fft函数后占用空间对比

移植前

移植后大约多了10K

二、代码实现

1.GD32代码

代码如下:

#include "main.h"
#include <math.h>
#include <stdint.h>
#include "DSP.h"

#define NPT 1024
#define PI2 6.28318530717959
#define Fs 44800

uint32_t lBufInArray[NPT];
uint32_t lBufOutArray[NPT/2];
uint32_t lBufMagArray[NPT/2];

void InitBufInArray()
{
    unsigned short i;
    float fx,fs;
     fs = (float)Fs;
    for(i=0; i<NPT;i++)
    {
        fx = 1000 + 1500 * sin(PI2 * i * 350.0 / fs) +
            2500 * sin(PI2 * i * 8400.0 / fs) +
            4000 * sin(PI2 * i * 18725.0 / fs);
        lBufInArray[i] = ((signed short)fx) << 16 ;
    }
}

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);
        X = NPT * ((float)lX) / 32768;
        Y = NPT * ((float)lY) / 32768;
        Mag = sqrt(X * X + Y * Y) * 1.0 / NPT;
        if(i == 0)
           lBufMagArray[i] = (unsigned long)(Mag * 32768);
        else
           lBufMagArray[i] = (unsigned long)(Mag * 65536);
    }
}

void DSP_FFT1024(void)
{
	InitBufInArray();
	cr4_fft_1024_stm32(lBufOutArray, lBufInArray, NPT);
	GetPowerMag();
}




2.matlab代码

代码如下:

clear
Fs = 44800;                  % 采样率
N  = 1024;           % 采样点数
n  = 0:N-1;           % 采样序列
t  = 0:1/Fs:1-1/Fs;     % 时间序列
f = n * Fs / N;          %真实的频率

x = 1000 + 1500 * sin(2*pi*350*t) +2500 * sin(2*pi*8400*t) +4000 * sin(2*pi*18725*t);
y = fft(x, N);               %对原始信号做FFT变换

subplot(2,1,1);
Mag = abs(y)*2/N;         %求FFT转换结果的模值
plot(f, Mag);               %绘制幅频相应曲线
title('Matlab计算结果');
xlabel('频率');
ylabel('幅度');

总结

这里对文章进行总结:GD32在第9个点,真实频率f=350hz,幅值1492。matlab计算结果为1500。可以使用此库。

本文地址:https://blog.csdn.net/weixin_39309257/article/details/110179776

《GD32E103移植stm32 fft函数.doc》

下载本文的Word格式文档,以方便收藏与打印。