frank dunn
/
fft_test_stmf411
test noise on 50hz
Diff: main.cpp
- Revision:
- 0:015ecf1bac06
- Child:
- 1:6b7e5eae3a55
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Sep 30 14:51:31 2016 +0000 @@ -0,0 +1,92 @@ +// Print messages when the AnalogIn is greater than 50% + +#include "mbed.h" +#include "arm_math.h" +#include "arm_const_structs.h" + + +#define led_on 0x00 +#define led_off 0x01 + +DigitalOut led_r(PTA1); +DigitalOut led_g(PTA2); +DigitalOut led_b(PTD5); + +const int FFT_LEN = 64; +const int bins = 32; + + +const static arm_cfft_instance_f32 *S; + +float samples[FFT_LEN*2]; +float magnitudes[FFT_LEN]; +float freq_window[bins]; + + +int main() +{ //initialize led to all off + led_r.write(led_off); + led_g.write(led_off); + led_b.write(led_off); + + + int32_t i = 0; + + // Init arm_ccft_32 + switch (FFT_LEN) + { + case 16: + S = & arm_cfft_sR_f32_len16; + break; + case 32: + S = & arm_cfft_sR_f32_len32; + break; + case 64: + S = & arm_cfft_sR_f32_len64; + break; + case 128: + S = & arm_cfft_sR_f32_len128; + break; + case 256: + S = & arm_cfft_sR_f32_len256; + break; + case 512: + S = & arm_cfft_sR_f32_len512; + break; + case 1024: + S = & arm_cfft_sR_f32_len1024; + break; + case 2048: + S = & arm_cfft_sR_f32_len2048; + break; + case 4096: + S = & arm_cfft_sR_f32_len4096; + break; + } + + /*populate some dummy sin data*/ + for(i = 0; i< FFT_LEN*2; i+=2) + { + //fast math sine table[512+1] + samples[i] = sinTable_f32[i*4]; + samples[i+1] = 0; + } + + // Run FFT on sample data. + arm_cfft_f32(S, samples, 0, 1); + // Calculate magnitude of complex numbers output by the FFT. + arm_cmplx_mag_f32(samples, magnitudes, FFT_LEN); + + for(i = 0; i< FFT_LEN; i++) + { + printf("magnitudes[%f]: %f\r\n",i,magnitudes[i]); + } + + + printf("test complete"); + + while(1) + { + + } +} \ No newline at end of file