arm_fft_bin_example_f32.c

/* ----------------------------------------------------------------------     
* Copyright (C) 2011 ARM Limited. All rights reserved. 
*     
* $Date:        15. December 2011   
* $Revision:    V2.0.0  
*     
* Project:      Cortex-R4 DSP Library 
* Title:        arm_fft_bin_example_f32.c         
*  
* Description:  Example code demonstrating calculation of Max energy bin of  
*               frequency domain of input signal. 
* 
* Target Processor:          Cortex-R4
*
* Version 2.0.0 2011/12/15
*     Final release. 
* 
* ---------------------------------------------------------------------------- */ 
 
#include "arm_math.h" 
 
#define TEST_LENGTH_SAMPLES 2048 
 
/* ------------------------------------------------------------------- 
* External Input and Output buffer Declarations for FFT Bin Example 
* ------------------------------------------------------------------- */ 
extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES]; 
static float32_t testOutput[TEST_LENGTH_SAMPLES/2]; 
 
/* ------------------------------------------------------------------ 
* Global variables for FFT Bin Example 
* ------------------------------------------------------------------- */ 
uint32_t fftSize = 1024; 
uint32_t ifftFlag = 0; 
uint32_t doBitReverse = 1; 
 
/* Reference index at which max energy of bin ocuurs */ 
uint32_t refIndex = 213, testIndex = 0; 
 
/* ---------------------------------------------------------------------- 
* Max magnitude FFT Bin test 
* ------------------------------------------------------------------- */ 
 
int32_t main(void) 
{ 
   
    arm_status status; 
    arm_cfft_radix4_instance_f32 S; 
    float32_t maxValue; 
     
    status = ARM_MATH_SUCCESS; 
     
    /* Initialize the CFFT/CIFFT module */  
    status = arm_cfft_radix4_init_f32(&S, fftSize,  
                                    ifftFlag, doBitReverse); 
     
    /* Process the data through the CFFT/CIFFT module */ 
    arm_cfft_radix4_f32(&S, testInput_f32_10khz); 
     
     
    /* Process the data through the Complex Magnitude Module for  
    calculating the magnitude at each bin */ 
    arm_cmplx_mag_f32(testInput_f32_10khz, testOutput,  
                    fftSize);  
     
    /* Calculates maxValue and returns corresponding BIN value */ 
    arm_max_f32(testOutput, fftSize, &maxValue, &testIndex); 
     
    if(testIndex !=  refIndex) 
    { 
        status = ARM_MATH_TEST_FAILURE; 
    } 
     
    /* ---------------------------------------------------------------------- 
    ** Loop here if the signals fail the PASS check. 
    ** This denotes a test failure 
    ** ------------------------------------------------------------------- */ 
     
    if( status != ARM_MATH_SUCCESS) 
    { 
        while(1); 
    } 
} 
 
 All Data Structures Files Functions Variables Enumerations Enumerator Defines