cancel
Showing results for 
Search instead for 
Did you mean: 

Where are the CMSIS-DSP libraries for STM32U5A9J

nico23
Senior III

So I have a board which I'm correctly using with threadX and TouchGFX.

I want to implement a function that calculates the FFT of a signal, but I'm having a hard time finding the CMSIS-DSP libraries.

I need to include the classic math library for ARM

#include "arm_math.h"
#include "arm_const_structs.h"

But in cubeMX I'm finding various DSP libraries

nico23_0-1767100107311.png

nico23_1-1767100139885.png

what should I use?

1 ACCEPTED SOLUTION

Accepted Solutions
nico23
Senior III

Ok, so the issue has been fixed following this https://community.st.com/t5/stm32-mcus-embedded-software/quot-first-defined-here-quot-error-with-cmsis-dsp-1-15/td-p/601583

But I still don't understand what the difference is between the <library>.c and <library>F16.c (I think the F16 executes operations on 16bit floats and not 32bit floats)

View solution in original post

7 REPLIES 7
Andrew Neil
Super User

Does this help: How to integrate CMSIS-DSP libraries on a STM32 project ?

 

Also: Configuring DSP libraries on STM32CubeIDE ?

A complex system that works is invariably found to have evolved from a simple system that worked.
A complex system designed from scratch never works and cannot be patched up to make it work.

AHai @Andrew Neil 

This helped a lot, thanks! The only thing that seems not to be explained is why I'm seeing a series of error "multiple definition of" "first defined here"

<my_project>/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c:318: multiple definition of `arm_biquad_cascade_df1_q15'; ./Drivers/DSP/Source/FilteringFunctions/FilteringFunctions.o:<my_project>/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c:318: first defined here

 Which one was I supposed to keep?

nico23
Senior III

Ok, so the issue has been fixed following this https://community.st.com/t5/stm32-mcus-embedded-software/quot-first-defined-here-quot-error-with-cmsis-dsp-1-15/td-p/601583

But I still don't understand what the difference is between the <library>.c and <library>F16.c (I think the F16 executes operations on 16bit floats and not 32bit floats)

> But I still don't understand what the difference is between the <library>.c and <library>F16.c (I think the F16 executes operations on 16bit floats and not 32bit floats)

Did you mean "Q15" here ? https://en.wikipedia.org/wiki/Q_(number_format)

The CMSIS libraries support this format for years now.
At least in the DSP Lib version I have (F0..F7), those source files are still named *q15.c and *q15.h.

No, I mean *F16.c

For instance, I'm seeing the file SupportFunctions.c and SupportFunctionsF16.c.

Deleting the SupportFunctions.c (and all the other .c without the F16) made the errors disappear 

Funny ...

There is no such thing as a *F16.* source file anywhere in the versions I reviewed - which are admittedly a bit older (from 2014..15).
But the DSP Libs are created by ARM itself, not any vendor. You would have to ask them, or look up in the sources what that type refers to.

> Deleting the SupportFunctions.c (and all the other .c without the F16) made the errors disappear  

Just add the source files you actually need.
I did a few FFT projects, and usually either copied the sources directly over into the project, or added them to the project "in place" as read-only source.


@Ozone wrote:

But the DSP Libs are created by ARM itself, not any vendor. 


Indeed.

@nico23 - see: https://arm-software.github.io/CMSIS_6/latest/DSP/index.html

 


@Ozone wrote:

You would have to ask them, .


eg, 

https://community.arm.com/support-forums/f/compilers-and-libraries-forum

https://community.arm.com/support-forums/f/keil-forum

 

A complex system that works is invariably found to have evolved from a simple system that worked.
A complex system designed from scratch never works and cannot be patched up to make it work.