test noise on 50hz

Dependencies:   mbed mbed-dsp

Committer:
frank_dunn1
Date:
Thu Jun 25 08:24:35 2020 +0000
Revision:
2:0ca66fc9adc9
Parent:
1:6b7e5eae3a55
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cpm219 0:015ecf1bac06 1 // Print messages when the AnalogIn is greater than 50%
cpm219 0:015ecf1bac06 2
cpm219 0:015ecf1bac06 3 #include "mbed.h"
cpm219 0:015ecf1bac06 4 #include "arm_math.h"
cpm219 0:015ecf1bac06 5 #include "arm_const_structs.h"
cpm219 0:015ecf1bac06 6
cpm219 0:015ecf1bac06 7
frank_dunn1 2:0ca66fc9adc9 8
frank_dunn1 2:0ca66fc9adc9 9
cpm219 0:015ecf1bac06 10
frank_dunn1 2:0ca66fc9adc9 11 const int FFT_LEN = 32;
frank_dunn1 2:0ca66fc9adc9 12 const int bins = 64;
cpm219 0:015ecf1bac06 13
cpm219 0:015ecf1bac06 14
cpm219 0:015ecf1bac06 15 const static arm_cfft_instance_f32 *S;
cpm219 0:015ecf1bac06 16
frank_dunn1 2:0ca66fc9adc9 17 float samples[FFT_LEN*2]={0.74749772289107352,-0.6620341598054913,2.5810074680698305,2.0375690829541551,0.85501630972362808,2.4491971123982741,0.96898486707269238,0.071615312869874215,4.135489449279282,2.8204892200482625,
frank_dunn1 2:0ca66fc9adc9 18 1.004264658763629,1.0598806981968543,1.3924726256823439,1.1527769317445544,0.16468389119249338,-0.27422782796214529,1.8047039643381464,0.79038862751269323,-0.44495813830147357,0.53068869150488007,
frank_dunn1 2:0ca66fc9adc9 19 1.3484439163009583,1.4200129154057697,0.88845273294643168,1.8349129948395904,1.0701928581879496,0.90708728254350102,2.4103567463264239,2.6309595238537535,2.5569927393322835,-0.58523807239622561,
frank_dunn1 2:0ca66fc9adc9 20 -0.51517227902319718,0.69679202690936726,1.2722062355241623,0.15100625736779782,-1.6440964183517333,-1.7653834312280656,-0.70269258104390242,1.142109051997795,1.9091357377458946,0.86960141090930632,
frank_dunn1 2:0ca66fc9adc9 21 0.96627954013362549,1.7838151901061594,2.0938256426948465,2.4378461326556282,2.2612077719971997,0.153796332301813,2.4901349915557365,2.4431403321019047,-0.35438693729683535,2.8433009646491154,
frank_dunn1 2:0ca66fc9adc9 22 0.51019781464390002,0.42022358860095488,0.2968374005289679,2.4566906658298451,0.33088401348465118,2.3551821216079407,0.9486742272689056,1.3010822355769571,1.4433689356494175,0.88483024478861216,
frank_dunn1 2:0ca66fc9adc9 23 0.60929525861200262,2.8294626914715204,1.9228669058909631,0.9947297034997874};
cpm219 0:015ecf1bac06 24 float magnitudes[FFT_LEN];
cpm219 0:015ecf1bac06 25 float freq_window[bins];
frank_dunn1 2:0ca66fc9adc9 26 Serial pc(USBTX, USBRX);
cpm219 0:015ecf1bac06 27
cpm219 0:015ecf1bac06 28 int main()
frank_dunn1 2:0ca66fc9adc9 29 {
frank_dunn1 2:0ca66fc9adc9 30 pc.baud(115200);
cpm219 0:015ecf1bac06 31 int32_t i = 0;
cpm219 1:6b7e5eae3a55 32 printf("\r\n\r\nFFT test program!\r\n");
cpm219 1:6b7e5eae3a55 33 printf("by Curtis Mattull\r\n\r\n\r\n");
cpm219 1:6b7e5eae3a55 34
cpm219 1:6b7e5eae3a55 35
cpm219 0:015ecf1bac06 36 // Init arm_ccft_32
cpm219 0:015ecf1bac06 37 switch (FFT_LEN)
cpm219 0:015ecf1bac06 38 {
cpm219 0:015ecf1bac06 39 case 16:
cpm219 0:015ecf1bac06 40 S = & arm_cfft_sR_f32_len16;
cpm219 0:015ecf1bac06 41 break;
cpm219 0:015ecf1bac06 42 case 32:
cpm219 0:015ecf1bac06 43 S = & arm_cfft_sR_f32_len32;
cpm219 0:015ecf1bac06 44 break;
cpm219 0:015ecf1bac06 45 case 64:
cpm219 0:015ecf1bac06 46 S = & arm_cfft_sR_f32_len64;
cpm219 0:015ecf1bac06 47 break;
cpm219 0:015ecf1bac06 48 case 128:
cpm219 0:015ecf1bac06 49 S = & arm_cfft_sR_f32_len128;
cpm219 0:015ecf1bac06 50 break;
cpm219 0:015ecf1bac06 51 case 256:
cpm219 0:015ecf1bac06 52 S = & arm_cfft_sR_f32_len256;
cpm219 0:015ecf1bac06 53 break;
cpm219 0:015ecf1bac06 54 case 512:
cpm219 0:015ecf1bac06 55 S = & arm_cfft_sR_f32_len512;
cpm219 0:015ecf1bac06 56 break;
cpm219 0:015ecf1bac06 57 case 1024:
cpm219 0:015ecf1bac06 58 S = & arm_cfft_sR_f32_len1024;
cpm219 0:015ecf1bac06 59 break;
cpm219 0:015ecf1bac06 60 case 2048:
cpm219 0:015ecf1bac06 61 S = & arm_cfft_sR_f32_len2048;
cpm219 0:015ecf1bac06 62 break;
cpm219 0:015ecf1bac06 63 case 4096:
cpm219 0:015ecf1bac06 64 S = & arm_cfft_sR_f32_len4096;
cpm219 0:015ecf1bac06 65 break;
cpm219 0:015ecf1bac06 66 }
cpm219 0:015ecf1bac06 67
cpm219 0:015ecf1bac06 68 /*populate some dummy sin data*/
frank_dunn1 2:0ca66fc9adc9 69 //for(i = 0; i< FFT_LEN*2; i+=2)
frank_dunn1 2:0ca66fc9adc9 70 //{
cpm219 0:015ecf1bac06 71 //fast math sine table[512+1]
frank_dunn1 2:0ca66fc9adc9 72 //samples[i] = sinTable_f32[i/4];
frank_dunn1 2:0ca66fc9adc9 73 //samples[i+1] = 0;
frank_dunn1 2:0ca66fc9adc9 74 //}
cpm219 0:015ecf1bac06 75
cpm219 1:6b7e5eae3a55 76 /*multiply the dummy data with more dummy data*/
cpm219 1:6b7e5eae3a55 77 // for(i = 0; i< FFT_LEN*2; i+=2)
cpm219 1:6b7e5eae3a55 78 // {
cpm219 1:6b7e5eae3a55 79 // //fast math sine table[512+1]
cpm219 1:6b7e5eae3a55 80 // samples[i] +=sinTable_f32[i/2] ;
cpm219 1:6b7e5eae3a55 81 // samples[i+1] = 0;
cpm219 1:6b7e5eae3a55 82 // }
cpm219 1:6b7e5eae3a55 83
cpm219 0:015ecf1bac06 84 // Run FFT on sample data.
cpm219 0:015ecf1bac06 85 arm_cfft_f32(S, samples, 0, 1);
cpm219 0:015ecf1bac06 86 // Calculate magnitude of complex numbers output by the FFT.
cpm219 0:015ecf1bac06 87 arm_cmplx_mag_f32(samples, magnitudes, FFT_LEN);
cpm219 0:015ecf1bac06 88
cpm219 1:6b7e5eae3a55 89 printf("\r\nThe first 20 bins:\r\n");
cpm219 1:6b7e5eae3a55 90
frank_dunn1 2:0ca66fc9adc9 91 for(i = 0; i< 40; i++)
cpm219 0:015ecf1bac06 92 {
cpm219 1:6b7e5eae3a55 93 printf("magnitudes[%i]: %f\r\n",i,magnitudes[i]);
cpm219 0:015ecf1bac06 94 }
cpm219 0:015ecf1bac06 95
frank_dunn1 2:0ca66fc9adc9 96 //led_g.write(led_on);
cpm219 0:015ecf1bac06 97
cpm219 1:6b7e5eae3a55 98 printf("test complete\r\n");
cpm219 1:6b7e5eae3a55 99 wait(1);
cpm219 0:015ecf1bac06 100 while(1)
cpm219 0:015ecf1bac06 101 {
cpm219 0:015ecf1bac06 102
cpm219 0:015ecf1bac06 103 }
cpm219 0:015ecf1bac06 104 }