Using ARM CMSIS DSP with the STM32F303 Nucleo board

ARM have developed a range of optimized DSP functions for all of the Cortex MCU’s. I have found them a challenge to use in “baremetal” gcc based projects as they rely on a particular directory structure and certain compiler directives. The project linked below tackles these difficulties and implements a real-time Finite Impulse Response FIR low pass filter on an STM32F303 Nucleo board.  The filter has a sample rate of 20kHz and a cut-off frequency of 1kHz.  Initial evaluations indicate the filter performs well and further experimentation will definitely follow.

The output voltage at 500Hz is shown in yellow below (input signal is green trace).fir_at_500Hz

The output voltage at 1kHz is shown in yellow below.  The roll off is a little more than expected but this could be the result of truncating of coefficients.

fir_at_1000Hz

Code and further explanatory documentation is available here:

http://eleceng.dit.ie/frank/arm/BareMetalSTM32F303Nucleo/fir/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s