This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] fr5994实际FFT结果

Guru**** 2586515 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/615257/fr5994-real-fft-result

我 使用FR5994分析信号,信号由两个信号组成:

1、单个,频率200Hz,振幅0.6  

2、信号,频率为2100Hz,振幅0.15

FS = 8192Hz,在N = 256点后实际FFT,结果如上图所示。

那么  上面的数字代表什么呢? 例如,[137305] 是什么意思?

也就是说,如何从  图中获得信号的频率-振幅?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    那么  ,以上的图是什么?[/QUOT]根据提供的信息,不确定。

    数据是如何产生的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    包括"MSP4S.h"

    #include <mathing.h>
    #include <stdint.h>
    #include <stdbool.h>

    #include "DSPLIB.h"

    /*输入信号参数*/
    #定义FS 8192
    #定义样本256
    #define signal_FREQUENCY1200
    #define signal_Amplitude1 0.6
    #define signal_FREQUENCY22100
    #define SIGNAL_AMPLITUDE2 0.15

    /* Hamming Window参数*/
    #define hamming_alpha 0.5.3836万
    #define hamming_beta 0.4.6164万

    /*常量*/
    #Define PI 3.1415926536

    /*生成的Hamming Window函数*/
    DSPLIB_DATA (窗口,4)
    _Q15窗口[示例];

    /*输入信号和FFT结果*/
    DSPLIB_DATA (INPUT,MSP_ALIGIN_FFT_Q15 (样本))
    _Q15输入[样本];

    /*用于处理的临时数据数组*/
    DSPLIB_DATA (临时,4)
    _Q15 temp[3*samples/2];

    /*基准周期计数*/
    挥发性UINT32_t细胞计数;

    /*函数原型*/
    extern void initSigne(void);
    extern void initHamming(void);

    Void主(void)

    MSP_STATUS状态;
    mspump_q15_params mpyParams;
    MSP_FFT_Q15_params fftParams;

    /*禁用WDT */
    WDTCTL = WDTPW + WDTHOLD;

    /*初始化输入信号和Hamming窗口*/
    initSignal();
    initHamming();

    /*将输入信号乘以生成的Hamming窗口*/
    mpyParams.length =样本;
    状态= MSP_Pumped_Q15 (&mpyParams,输入,窗口,输入);
    MSP_checkStatus (状态);

    /*初始化FFT参数结构。 */
    fftParams.length =样本;
    fftParams.bitReverse =真;
    fftParams.twiddleTable = MSP_cmplx_twidle_table_256_Q15;

    /*执行固定缩放的实际FFT */
    msm_benchmarkStart(MSP_benchmark_base, 16);
    状态= MSP_FFT_FIXED_Q15 (&fftParams,输入);
    cycleCount = MSP_benchmarkStop(MSP_benchmark_base);
    MSP_checkStatus (状态);

    /*程序结束。 */
    __no_operation();
    }

    void initSigne(void)

    MSP_STATUS状态;
    msp_add_q15_params addParams;
    msp_sinusoid Q15_params sinParams;

    /*生成Q15输入信号1*/
    sinParams.length =样本;
    sinParams.振 幅=_Q15 (signal_Amplitude1);
    sinParams.cosOmega =_Q15(cosf(2*PI*SIGNAL_FREQUENCY1/FS));
    sinParams.sinOmega =_Q15(sinf (2*PI*SIGNAL_FREQUENCY1/FS));
    状态= MSP_sinusoid Q15 (&sinParams,输入);
    MSP_checkStatus (状态);

    /*生成Q15输入信号2到临时数组*/
    sinParams.length =样本;
    sinParams.振 幅=_Q15 (SIGNAL_AMPLIMUDE2);
    sinParams.cosOmega =_Q15(cosf(2*PI*SIGNAL_FREQUENCY2/FS));
    sinParams.sinOmega =_Q15(sinf (2*PI*SIGNAL_FREQUENCY2/FS));
    状态= MSP_sinusoid Q15 (&sinParams,temp);
    MSP_checkStatus (状态);

    /*添加输入信号*/
    addParams.length =样本;
    状态= MSP_ADD_Q15(&addParams, input, temp, input);
    MSP_checkStatus (状态);
    }

    void initHamming(void)(无效)

    MSP_STATUS状态;
    msp_sub_q15_params子参数;
    msp_copy_q15_params copyParams;
    msp_fill Q15_params filParams;
    msp_sinusoid Q15_params sinParams;

    /*为余弦函数生成正弦曲线*/
    sinParams.length =3*samples/2;
    sinParams.振 幅=_Q15 (hamming_beta);
    sinParams.cosOmega =_Q15(cosf(2*pi/(samples-1));
    sinParams.sinOmega =_Q15 (sinf (2*pi/(samples-1)));
    状态= MSP_sinusoid Q15 (&sinParams,temp);
    MSP_checkStatus (状态);

    /*通过PI/2移动正弦曲线以创建余弦函数*/
    copyParams.length =样本;
    状态= MSP_COPY_Q15 (&copyParams,&temp[samples/4],&temp[0]);
    MSP_checkStatus (状态);

    /*使用alpha常量*/填充临时数组
    FillParams.length =样本;
    FillParams.value =_Q15 (haming_alpha);
    状态= MSP_Fill _Q15 (&filParams,窗口);
    MSP_checkStatus (状态);

    /*从alpha常量减去生成的余弦以生成最终窗口*/
    SubParams.length =样本;
    状态= msp_sub_q15 (&subParams,Window,temp,Window);
    MSP_checkStatus (状态);
    }

    执行FFT,后,图中的结果是 输入指针指向的数组

    状态= MSP_FFT_FIXED_Q15 (&fftParams,输入);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kissn Liu 说:
    执行FFT后,该图的结果是 输入指针指向的数组。[/QUOT]

    发布的代码似乎是MSP DSP库 transform_ex1_FFT_fixed_q15.c 示例。

    以下对示例的描述是否有助于回答您的问题?

    此示例演示如何使用MSP_FFT_FIXED_Q15 API,使用具有固定缩放功能的Q15快速傅立叶变换(FFT)将实际输入数据数组转换为频率域。 REAL FFT函数与运行虚分量设置为零的复杂FFT相同。 实际FFT的结果是具有一半样本但字节长度相同的复杂向量。[/QUOT]

    有关  更多信息,请参阅计算长度N实数输入序列中的长度N/2复数FFT。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,我知道FFT函数测量的结果。顺便说一下,LEA是否支持更高的FFT?
    例如51.2102万4.....
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    顺便说一下,LEA是否支持更高的FFT?[/QUOT]查看MSP DSP库文档时,LEA支持16,32,6412.8256万, 51.2102万4,2048或4096。

    这些是FFT大小,其 Twiddle因子表存储在LEA ROM (或非LEA版本的DSPLIB源代码)中。