Javier Vicente Saez / Mbed 2 deprecated PruebaFiltro

Dependencies:   mbed CMSIS_DSP_5 TextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "arm_math.h"
00003 #include <stdio.h>
00004 #include <string.h>
00005 #include "datos.h"
00006 
00007 #define NUM_TAPS              15
00008 #define NUM_STAGES            3
00009 float inDataFloat[frameLength];
00010 float outDataFloat[frameLength];
00011 float valorRMSFloat;
00012 float valorRMSSinFiltro;
00013 float valorRMSSinFiltroConvertido;
00014 float valorRMSConvertido;
00015 float meanSinFiltro;
00016 float meanTrasFiltro;
00017 
00018 Serial pc(USBTX, USBRX); // tx, rx
00019 
00020 float  salida[frameLength];
00021 
00022 const float32_t iirCoeffs32[NUM_TAPS] = {0.04475,-2.2348e-08,-0.044751,1.8954,-0.91178,0.04475,0.089501,0.04475,1.9116,-0.94211,0.04475,-0.089501,0.04475,1.9588,-0.96799 };
00023 
00024 
00025 static float32_t iirStateF32[4*NUM_STAGES];
00026 
00027 arm_biquad_casd_df1_inst_f32 S;
00028 
00029 /// Tocar funciones de abajo
00030 
00031 void init_procesado()
00032 {
00033     arm_biquad_cascade_df1_init_f32(&S, NUM_STAGES, (float32_t *)&iirCoeffs32[0], &iirStateF32[0]);
00034 }
00035 
00036 void procesarfloat(float *inData,float *outData,int32_t length)
00037 {
00038     arm_mean_f32(inData, length, &meanSinFiltro);
00039     arm_rms_f32(inData, length, &valorRMSSinFiltro);
00040     valorRMSSinFiltroConvertido = valorRMSSinFiltro*3.3f;
00041 
00042     arm_biquad_cascade_df1_f32(&S, inData, outData, length);
00043 
00044     arm_rms_f32(outData, length, &valorRMSFloat);
00045     valorRMSConvertido = valorRMSFloat*3.3f;
00046     arm_mean_f32(outData, length, &meanTrasFiltro);
00047 }
00048 
00049 // PROGRAMA PRINCIPAL
00050 int main()
00051 {
00052     pc.baud(115200);
00053     init_procesado();
00054     procesarfloat(datos,salida,frameLength);
00055     pc.printf("*******************************entrada\n");
00056     for (int n=0; n<frameLength; n++) {
00057         pc.printf("%f\n",datos[n]);
00058     }
00059     pc.printf("********************************salida\n");
00060     for (int n=0; n<frameLength; n++) {
00061         pc.printf("%f\n",salida[n]);
00062     }
00063     while(1) {
00064         wait(1000);
00065     }
00066 
00067 
00068 }
00069 
00070 
00071 
00072 
00073 
00074 
00075 
00076 
00077 
00078 
00079 
00080 
00081