#include <Arduino.h>
#include "Arduino_CMSIS-DSP.h" // Use CMSIS-DSP in Wokwi
#define BLOCK_SIZE 5
#define NUM_TAPS 3
// FIR filter coefficients
const float32_t firCoeffs[NUM_TAPS] = { 0.2f, 0.6f, 0.2f };
// Input signal (test values)
float32_t inputSignal[BLOCK_SIZE] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f };
float32_t outputSignal[BLOCK_SIZE]; // Output buffer
// DSP FIR filter instance
arm_fir_instance_f32 S;
float32_t state[BLOCK_SIZE + NUM_TAPS - 1];
void setup() {
Serial.begin(115200);
// Initialize CMSIS FIR filter
arm_fir_init_f32(&S, NUM_TAPS, firCoeffs, state, BLOCK_SIZE);
// Apply FIR filter
arm_fir_f32(&S, inputSignal, outputSignal, BLOCK_SIZE);
// Print results
Serial.println("Filtered Output:");
for (int i = 0; i < BLOCK_SIZE; i++) {
Serial.println(outputSignal[i], 6);
}
}
void loop() {
// Nothing to do in loop
}
Loading
st-nucleo-c031c6
st-nucleo-c031c6