cancel
Showing results for 
Search instead for 
Did you mean: 

How to use Q1.15 format data to CORDIC cosine function.

Leo_Chao
Associate

Excuse me. I have some trouble in CORDIC function.

I Config CORDIC by Q1.31 for input and output data format. CORDIC can't work and the return data is right.

But I change  the CORDIC input data to Q1.15 in config, It can't work. I always get 0.

Below is my config ...

 

LL_CORDIC_Config(CORDIC, LL_CORDIC_FUNCTION_COSINE, /* cosine function */ LL_CORDIC_PRECISION_4CYCLES, /* max precision for q1.31 cosine */ LL_CORDIC_SCALE_0, /* no scale */ LL_CORDIC_NBWRITE_1, /* One input data: angle. Second input data (modulus) is 1 after cordic reset */ LL_CORDIC_NBREAD_1, /* One output data: cosine, then sine */ LL_CORDIC_INSIZE_16BITS, /* q1.15 format for input data */ LL_CORDIC_OUTSIZE_16BITS); /* q1.15 format for output data */ and this is send data to CORDIC tempf = input_degree /180.0f; if(tempf > 1) { tempf = tempf-2; } else if(tempf <-1) { tempf = tempf+2 ; } temp_16 = (float)tempf * 32768; //for 16bit ANGLE_CORDIC = (temp_16); //for 16bit input /* Write angle */ LL_CORDIC_WriteData(CORDIC, ANGLE_CORDIC); temp_32= (int32_t)LL_CORDIC_ReadData(CORDIC); cos_value = (float)((int16_t)(temp_32 & 0xFFFF)) / 32768; sin_value = (float)(temp_32 >>16) / 32768;
View more

How to modify it to work for Q1.15 input data format? Thank you.

 

0 REPLIES 0