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/

Analog I/O examples for the STM32F303 Nucleo

Two new examples for the stm32f303 nucleo board are available for download.  The first of these outputs ADC conversion results over the serial port (serialadc).  The second performs a simple analog pass-through function sending the ADC output to the DAC.  Sample rates over 100kHz are possible.  This example uses the systick interrupt to generate a reliable sample rate.  More details here:

http://eleceng.dit.ie/frank/arm/BareMetalSTM32F303Nucleo/index.html