FIR filter implementation using ESP-DSP library
In this article we will implement an FIR filter using ESP-DSP library.
The C code is given as below.
#include <stdio.h>
#include "esp_dsp.h"
#include "dsps_fir.h"
#define INPUT_LEN 6
#define COEF_LEN 6
#define OUT_LEN 6
const float input_arr[]={1.0f,2.0f,3.0f,4.0f,1.0f,2.0f};
float output_arr[OUT_LEN] = {0};
float coef_arr[] = {1.0f,1.0f,1.0f,1.0f,1.0f,1.0f};
float delay_arr[COEF_LEN + 4]={0};
struct fir_f32_s var;
void app_main(void)
{
if(dsps_fir_init_f32(&var,coef_arr,delay_arr, COEF_LEN) == ESP_OK)//filter initialization
printf("filter initialized successfully\n");
}
else
{
printf("filter not initialized\n");
}
if(dsps_fir_f32_ae32(&var, input_arr,output_arr, OUT_LEN) == ESP_OK)//filter computation function
{
printf("filter computation success\n");
}
else
{
printf("filter computation not success\n");
}
for(int i=0;i<OUT_LEN;i++)
{
printf("%f\n",output_arr[i]);
}
}
Note :- The ESP-DSP library can be downloaded using following commands.
cd your-project-directory
mkdir -p components
cd components
git clone https://github.com/espressif/esp-dsp.git
That's it.
Development Environment - Espressif-IDE
Development Board - ESP32 WROOM
Programming language - C