I'm a robot engineer and I usually use MCUs such as nrf52832(cortex-M4f) or ST32f407(cortex) to use various sensors.
Since those MCUs have an FPU inside, calculating time was quite fast without any burdensome optimizations.
The problem is, I have to use nrf52810(cortex-M4 without FPU) and calculate fractional numbers and trigonometric functions.
I'm worried about computational time is not enough to fast handling multiple sensors with nrf52810.
As I know, the CMSIS DSP library is very powerful in calculating fixed-point variables and trigonometric functions.
The library has Q31 or Q15 format but I'm confused about using it right.
Do I have to map each variable to Q31 and bear the mapped variables in mind?
For example, multiplying 30.02f and 12.76f using CMSIS DSP in that way would like this
q31_t ValA_Q31, ValB_Q31, Outcome_Q31;
arm_float_to_q31(ValA/1000, &ValA_Q31,1); // Since range of Q31 is between -1 and 1
arm_float_to_q31(ValB/1000, &ValA_Q31,1); // Since range of Q31 is between -1 and 1
Is it correct to use CMSIS DSP in that way?
If there are other ways please let me know...
This is all the functions that I use. (sine, cosine, square root, addition, subtraction, division, multiplication)
This is the simplified calculation example for handling sensor output.
int32_t ValA = 300; // Integer Sensor value
The actual code is more complicated than above.
How can I use the CMSIS DSP in that case above to reduce the computational time?