Mohsen Samadani
/
Algorithm-testing
Code for measuring the signal with a specified length and sampling rate, and saving it on a SD card.
main.cpp@2:8c5b6522139f, 2017-10-05 (annotated)
- Committer:
- msamadani
- Date:
- Thu Oct 05 17:44:39 2017 +0000
- Revision:
- 2:8c5b6522139f
- Parent:
- 1:a514e4de034d
A version of the code that initializes the SD RAM, activates the codec, measures the signal and saves the signal onto the SD Card.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
msamadani | 0:c05b00be2229 | 1 | #include "main.h" |
msamadani | 0:c05b00be2229 | 2 | #include <string> |
msamadani | 0:c05b00be2229 | 3 | #include "mbed.h" |
msamadani | 0:c05b00be2229 | 4 | #include "sdram.h" |
msamadani | 0:c05b00be2229 | 5 | #include "SPIFI.h" |
msamadani | 0:c05b00be2229 | 6 | #include "stdio.h" |
msamadani | 0:c05b00be2229 | 7 | #include "string.h" |
msamadani | 0:c05b00be2229 | 8 | #include "math.h" |
msamadani | 0:c05b00be2229 | 9 | #include "stdlib.h" |
msamadani | 0:c05b00be2229 | 10 | #include "MCIFileSystem.h" |
msamadani | 0:c05b00be2229 | 11 | #include "measureSignal.h" |
msamadani | 0:c05b00be2229 | 12 | #include "savePower.h" |
msamadani | 0:c05b00be2229 | 13 | #include "sdcard.h" |
msamadani | 0:c05b00be2229 | 14 | #include <algorithm> |
msamadani | 0:c05b00be2229 | 15 | |
msamadani | 1:a514e4de034d | 16 | #include "bandPass.h" |
msamadani | 1:a514e4de034d | 17 | #include "envSignal.h" |
msamadani | 1:a514e4de034d | 18 | #include "envSignal_emxAPI.h" |
msamadani | 1:a514e4de034d | 19 | #include "envSignal_emxutil.h" |
msamadani | 1:a514e4de034d | 20 | #include "envSignal_types.h" |
msamadani | 0:c05b00be2229 | 21 | #include "main.h" |
msamadani | 0:c05b00be2229 | 22 | |
msamadani | 0:c05b00be2229 | 23 | static emxArray_real32_T *argInit_Unboundedx1_real32_T(float* x); |
msamadani | 0:c05b00be2229 | 24 | |
msamadani | 0:c05b00be2229 | 25 | /* Define variables */ |
msamadani | 2:8c5b6522139f | 26 | int fs=33000; // sampling rate |
msamadani | 1:a514e4de034d | 27 | int xsize=33000;// signal length; |
msamadani | 1:a514e4de034d | 28 | int transient=0; // transient part that is cut from the signal |
msamadani | 2:8c5b6522139f | 29 | std::string filename = "test"; // name of file saved to SD card |
msamadani | 0:c05b00be2229 | 30 | |
msamadani | 0:c05b00be2229 | 31 | |
msamadani | 0:c05b00be2229 | 32 | Serial pc(USBTX, USBRX); |
msamadani | 0:c05b00be2229 | 33 | |
msamadani | 0:c05b00be2229 | 34 | |
msamadani | 0:c05b00be2229 | 35 | int main() |
msamadani | 0:c05b00be2229 | 36 | { |
msamadani | 0:c05b00be2229 | 37 | |
msamadani | 0:c05b00be2229 | 38 | /* -----------------Initial setup -----------------------*/ |
msamadani | 0:c05b00be2229 | 39 | pc.baud(115200); // set baud rate for serial port. |
msamadani | 0:c05b00be2229 | 40 | sdram_init(); // initialize SDRAM. |
msamadani | 0:c05b00be2229 | 41 | //savePower(); //save power by turning ethernet and SDRAM off. |
msamadani | 0:c05b00be2229 | 42 | |
msamadani | 0:c05b00be2229 | 43 | |
msamadani | 0:c05b00be2229 | 44 | /*-----------------Record Signal with Codec---------------------*/ |
msamadani | 1:a514e4de034d | 45 | |
msamadani | 0:c05b00be2229 | 46 | int N=xsize+transient; //length of the original signal |
msamadani | 0:c05b00be2229 | 47 | int *signal_raw = (int *)malloc(N*sizeof(int)); |
msamadani | 0:c05b00be2229 | 48 | measureSignal(signal_raw,fs,N); // measure a signal with sampling frequency of fs and lenght of N |
msamadani | 0:c05b00be2229 | 49 | |
msamadani | 0:c05b00be2229 | 50 | // Scale data and convert to float |
msamadani | 0:c05b00be2229 | 51 | |
msamadani | 0:c05b00be2229 | 52 | float *signal = (float *)malloc(xsize*sizeof(float)); |
msamadani | 0:c05b00be2229 | 53 | for (int i = 0; i < xsize; i++) { |
msamadani | 0:c05b00be2229 | 54 | signal[i]=(float)(signal_raw[i+transient])/(5.8*pow(2.0,24)); |
msamadani | 0:c05b00be2229 | 55 | } |
msamadani | 0:c05b00be2229 | 56 | //free(signal_raw); |
msamadani | 0:c05b00be2229 | 57 | |
msamadani | 1:a514e4de034d | 58 | /*----------------Envelope Analysis-----------------------------*/ |
msamadani | 2:8c5b6522139f | 59 | /* |
msamadani | 0:c05b00be2229 | 60 | printf("Performing analysis...\n"); |
msamadani | 0:c05b00be2229 | 61 | emxArray_real32_T *signal2; |
msamadani | 1:a514e4de034d | 62 | emxArray_real32_T *fir_coef; |
msamadani | 1:a514e4de034d | 63 | emxArray_real32_T *env_signal ; |
msamadani | 1:a514e4de034d | 64 | |
msamadani | 1:a514e4de034d | 65 | static int iv0[2] = { xsize,1 }; |
msamadani | 1:a514e4de034d | 66 | signal2 = emxCreateND_real32_T(1, iv0); |
msamadani | 0:c05b00be2229 | 67 | for (int idx0 = 0; idx0 < xsize; idx0++) { |
msamadani | 0:c05b00be2229 | 68 | signal2->data[idx0] = signal[idx0]; |
msamadani | 0:c05b00be2229 | 69 | } |
msamadani | 0:c05b00be2229 | 70 | |
msamadani | 1:a514e4de034d | 71 | static int iv[2] = { 3201,1 }; |
msamadani | 1:a514e4de034d | 72 | fir_coef = emxCreateND_real32_T(1, iv); |
msamadani | 1:a514e4de034d | 73 | for (int idx = 0; idx < 3201; idx++) { |
msamadani | 1:a514e4de034d | 74 | fir_coef->data[idx] = fir_c[idx]; |
msamadani | 1:a514e4de034d | 75 | } |
msamadani | 0:c05b00be2229 | 76 | |
msamadani | 1:a514e4de034d | 77 | |
msamadani | 1:a514e4de034d | 78 | emxInitArray_real32_T(&env_signal, 1); |
msamadani | 1:a514e4de034d | 79 | envSignal(signal2,fir_coef, env_signal); |
msamadani | 0:c05b00be2229 | 80 | |
msamadani | 2:8c5b6522139f | 81 | */ |
msamadani | 0:c05b00be2229 | 82 | // Print data to terminal |
msamadani | 2:8c5b6522139f | 83 | //printf("analysis done\n"); |
msamadani | 1:a514e4de034d | 84 | for (int i = 5000; i < 5200; i++) { |
msamadani | 2:8c5b6522139f | 85 | //printf("%f %f %f\n",signal[i],signal2->data[i],env_signal->data[i]); |
msamadani | 2:8c5b6522139f | 86 | printf("%f \n"); |
msamadani | 2:8c5b6522139f | 87 | |
msamadani | 0:c05b00be2229 | 88 | } |
msamadani | 0:c05b00be2229 | 89 | |
msamadani | 0:c05b00be2229 | 90 | |
msamadani | 0:c05b00be2229 | 91 | /*---------------------------------------------------------------*/ |
msamadani | 2:8c5b6522139f | 92 | saveToSD(signal,xsize,filename.c_str()); //save data to SD card |
msamadani | 2:8c5b6522139f | 93 | //saveToSD(signal,xsize,"signal.txt"); |
msamadani | 1:a514e4de034d | 94 | // saveToSD(env_signal->data,xsize,"envsignal.txt"); |
msamadani | 0:c05b00be2229 | 95 | |
msamadani | 0:c05b00be2229 | 96 | |
msamadani | 0:c05b00be2229 | 97 | return 0; |
msamadani | 0:c05b00be2229 | 98 | } |