Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of fft_test_k22f by
main.cpp@1:6b7e5eae3a55, 2016-09-30 (annotated)
- Committer:
- cpm219
- Date:
- Fri Sep 30 16:05:16 2016 +0000
- Revision:
- 1:6b7e5eae3a55
- Parent:
- 0:015ecf1bac06
- Child:
- 2:b25d473135e8
latest version test software on frdm k22f
Who changed what in which revision?
| User | Revision | Line number | New 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 | |
| cpm219 | 0:015ecf1bac06 | 8 | #define led_on 0x00 |
| cpm219 | 0:015ecf1bac06 | 9 | #define led_off 0x01 |
| cpm219 | 0:015ecf1bac06 | 10 | |
| cpm219 | 0:015ecf1bac06 | 11 | DigitalOut led_r(PTA1); |
| cpm219 | 0:015ecf1bac06 | 12 | DigitalOut led_g(PTA2); |
| cpm219 | 0:015ecf1bac06 | 13 | DigitalOut led_b(PTD5); |
| cpm219 | 0:015ecf1bac06 | 14 | |
| cpm219 | 1:6b7e5eae3a55 | 15 | const int FFT_LEN = 1024; |
| cpm219 | 0:015ecf1bac06 | 16 | const int bins = 32; |
| cpm219 | 0:015ecf1bac06 | 17 | |
| cpm219 | 0:015ecf1bac06 | 18 | |
| cpm219 | 0:015ecf1bac06 | 19 | const static arm_cfft_instance_f32 *S; |
| cpm219 | 0:015ecf1bac06 | 20 | |
| cpm219 | 0:015ecf1bac06 | 21 | float samples[FFT_LEN*2]; |
| cpm219 | 0:015ecf1bac06 | 22 | float magnitudes[FFT_LEN]; |
| cpm219 | 0:015ecf1bac06 | 23 | float freq_window[bins]; |
| cpm219 | 0:015ecf1bac06 | 24 | |
| cpm219 | 0:015ecf1bac06 | 25 | |
| cpm219 | 0:015ecf1bac06 | 26 | int main() |
| cpm219 | 0:015ecf1bac06 | 27 | { //initialize led to all off |
| cpm219 | 0:015ecf1bac06 | 28 | led_r.write(led_off); |
| cpm219 | 0:015ecf1bac06 | 29 | led_g.write(led_off); |
| cpm219 | 0:015ecf1bac06 | 30 | led_b.write(led_off); |
| cpm219 | 0:015ecf1bac06 | 31 | |
| cpm219 | 0:015ecf1bac06 | 32 | |
| cpm219 | 0:015ecf1bac06 | 33 | int32_t i = 0; |
| cpm219 | 1:6b7e5eae3a55 | 34 | printf("\r\n\r\nFFT test program!\r\n"); |
| cpm219 | 1:6b7e5eae3a55 | 35 | printf("by Curtis Mattull\r\n\r\n\r\n"); |
| cpm219 | 1:6b7e5eae3a55 | 36 | |
| cpm219 | 1:6b7e5eae3a55 | 37 | |
| cpm219 | 0:015ecf1bac06 | 38 | // Init arm_ccft_32 |
| cpm219 | 0:015ecf1bac06 | 39 | switch (FFT_LEN) |
| cpm219 | 0:015ecf1bac06 | 40 | { |
| cpm219 | 0:015ecf1bac06 | 41 | case 16: |
| cpm219 | 0:015ecf1bac06 | 42 | S = & arm_cfft_sR_f32_len16; |
| cpm219 | 0:015ecf1bac06 | 43 | break; |
| cpm219 | 0:015ecf1bac06 | 44 | case 32: |
| cpm219 | 0:015ecf1bac06 | 45 | S = & arm_cfft_sR_f32_len32; |
| cpm219 | 0:015ecf1bac06 | 46 | break; |
| cpm219 | 0:015ecf1bac06 | 47 | case 64: |
| cpm219 | 0:015ecf1bac06 | 48 | S = & arm_cfft_sR_f32_len64; |
| cpm219 | 0:015ecf1bac06 | 49 | break; |
| cpm219 | 0:015ecf1bac06 | 50 | case 128: |
| cpm219 | 0:015ecf1bac06 | 51 | S = & arm_cfft_sR_f32_len128; |
| cpm219 | 0:015ecf1bac06 | 52 | break; |
| cpm219 | 0:015ecf1bac06 | 53 | case 256: |
| cpm219 | 0:015ecf1bac06 | 54 | S = & arm_cfft_sR_f32_len256; |
| cpm219 | 0:015ecf1bac06 | 55 | break; |
| cpm219 | 0:015ecf1bac06 | 56 | case 512: |
| cpm219 | 0:015ecf1bac06 | 57 | S = & arm_cfft_sR_f32_len512; |
| cpm219 | 0:015ecf1bac06 | 58 | break; |
| cpm219 | 0:015ecf1bac06 | 59 | case 1024: |
| cpm219 | 0:015ecf1bac06 | 60 | S = & arm_cfft_sR_f32_len1024; |
| cpm219 | 0:015ecf1bac06 | 61 | break; |
| cpm219 | 0:015ecf1bac06 | 62 | case 2048: |
| cpm219 | 0:015ecf1bac06 | 63 | S = & arm_cfft_sR_f32_len2048; |
| cpm219 | 0:015ecf1bac06 | 64 | break; |
| cpm219 | 0:015ecf1bac06 | 65 | case 4096: |
| cpm219 | 0:015ecf1bac06 | 66 | S = & arm_cfft_sR_f32_len4096; |
| cpm219 | 0:015ecf1bac06 | 67 | break; |
| cpm219 | 0:015ecf1bac06 | 68 | } |
| cpm219 | 0:015ecf1bac06 | 69 | |
| cpm219 | 0:015ecf1bac06 | 70 | /*populate some dummy sin data*/ |
| cpm219 | 0:015ecf1bac06 | 71 | for(i = 0; i< FFT_LEN*2; i+=2) |
| cpm219 | 0:015ecf1bac06 | 72 | { |
| cpm219 | 0:015ecf1bac06 | 73 | //fast math sine table[512+1] |
| cpm219 | 1:6b7e5eae3a55 | 74 | samples[i] = sinTable_f32[i/4]; |
| cpm219 | 0:015ecf1bac06 | 75 | samples[i+1] = 0; |
| cpm219 | 0:015ecf1bac06 | 76 | } |
| cpm219 | 0:015ecf1bac06 | 77 | |
| cpm219 | 1:6b7e5eae3a55 | 78 | /*multiply the dummy data with more dummy data*/ |
| cpm219 | 1:6b7e5eae3a55 | 79 | // for(i = 0; i< FFT_LEN*2; i+=2) |
| cpm219 | 1:6b7e5eae3a55 | 80 | // { |
| cpm219 | 1:6b7e5eae3a55 | 81 | // //fast math sine table[512+1] |
| cpm219 | 1:6b7e5eae3a55 | 82 | // samples[i] +=sinTable_f32[i/2] ; |
| cpm219 | 1:6b7e5eae3a55 | 83 | // samples[i+1] = 0; |
| cpm219 | 1:6b7e5eae3a55 | 84 | // } |
| cpm219 | 1:6b7e5eae3a55 | 85 | |
| cpm219 | 0:015ecf1bac06 | 86 | // Run FFT on sample data. |
| cpm219 | 0:015ecf1bac06 | 87 | arm_cfft_f32(S, samples, 0, 1); |
| cpm219 | 0:015ecf1bac06 | 88 | // Calculate magnitude of complex numbers output by the FFT. |
| cpm219 | 0:015ecf1bac06 | 89 | arm_cmplx_mag_f32(samples, magnitudes, FFT_LEN); |
| cpm219 | 0:015ecf1bac06 | 90 | |
| cpm219 | 1:6b7e5eae3a55 | 91 | printf("\r\nThe first 20 bins:\r\n"); |
| cpm219 | 1:6b7e5eae3a55 | 92 | |
| cpm219 | 1:6b7e5eae3a55 | 93 | for(i = 0; i< 20; i++) |
| cpm219 | 0:015ecf1bac06 | 94 | { |
| cpm219 | 1:6b7e5eae3a55 | 95 | printf("magnitudes[%i]: %f\r\n",i,magnitudes[i]); |
| cpm219 | 0:015ecf1bac06 | 96 | } |
| cpm219 | 0:015ecf1bac06 | 97 | |
| cpm219 | 1:6b7e5eae3a55 | 98 | led_g.write(led_on); |
| cpm219 | 0:015ecf1bac06 | 99 | |
| cpm219 | 1:6b7e5eae3a55 | 100 | printf("test complete\r\n"); |
| cpm219 | 1:6b7e5eae3a55 | 101 | wait(1); |
| cpm219 | 0:015ecf1bac06 | 102 | while(1) |
| cpm219 | 0:015ecf1bac06 | 103 | { |
| cpm219 | 0:015ecf1bac06 | 104 | |
| cpm219 | 0:015ecf1bac06 | 105 | } |
| cpm219 | 0:015ecf1bac06 | 106 | } |
