cancel
Showing results for 
Search instead for 
Did you mean: 

How can I use FFT library with STM32L010K4T6 (Cortex-M0+) in STM32CubeIDE?

burak_Guzeller
Associate III

Hi everyone,

I’m working with STM32L010K4T6, which is based on the ARM Cortex-M0+ core.
I’d like to use FFT (Fast Fourier Transform) functions in my project, preferably within STM32CubeIDE.

However, I noticed that the CMSIS-DSP library (which provides FFT functions) seems to have limited or no direct support for the L0 series inside CubeIDE.

My questions are:

  1. Is it possible to add and use the FFT / CMSIS-DSP library with STM32L0 series MCUs like STM32L010K4T6?

  2. If yes, what is the recommended way to integrate it in STM32CubeIDE (manual CMSIS-DSP source import, or any ready package)?

  3. Are there any performance or memory constraints I should be aware of when running FFT on Cortex-M0+?

Thank you in advance for any guidance!

Best regards,
Burak

1 ACCEPTED SOLUTION

Accepted Solutions
Imen.D
ST Employee

Hello @burak_Guzeller ,

I recommend you following these articles which may help you on how to integrate a library in an STM32CubeIDE project:

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen

View solution in original post

4 REPLIES 4
Imen.D
ST Employee

Hello @burak_Guzeller ,

I recommend you following these articles which may help you on how to integrate a library in an STM32CubeIDE project:

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen
Ozone
Principal II

I don't use Cube, and cannot comment on that.

But previously, there had been a special version of the SPL firmware package that included the DSP-libraries.
This "STM32xxx_DSP_StdPerip_Lib" contained all the DSP examples coming with the CMSIS package, including FFT examples.
I have based quite a few of my applications on such examples.

> Are there any performance or memory constraints I should be aware of when running FFT on Cortex-M0+?

Consider what you want and need it for, real-time evaluation or offline calculations.
The M0/M0+ has no FPU, so using the "f32" data types would involve a painfully slow emulation, and a significant code size penalty.
Not to mention, a shorter pipeline, reduced instruction set compared to the M3/4, and usually lower core clock.
I would recommend the 16-bit or 32-bit fixed-point variants, 'q15' or 'q31'.

LCE
Principal II

> Ozone: ... and a significant code size penalty.

And this alone might be the show stopper, considering the L0's small flash size.

Ozone
Principal II

Yes, although that depends on the MCU variant.
But the whole soft-fp emulation code is several kilobytes.

I had mostly been experimenting with the f32 variant for real-time transforms, on M4 variants with FPU.

Very much rests on the project requirements.