Solved
Why does CORDIC give not accurate results?
Hi all.
I have this piece of code:
__HAL_RCC_CORDIC_CLK_ENABLE();
CORDIC->CSR |= CORDIC_CSR_NARGS;
CORDIC->CSR |= (CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0);
CORDIC->CSR |= CORDIC_CSR_FUNC_1; // Phase function (atan2)
int32_t a = 1000;
int32_t b = 1000;
CORDIC->WDATA = a;
CORDIC->WDATA = b;
volatile double result_from_hw = (double)CORDIC->RDATA / 2147483648.0 * 180.0;
volatile double result_from_sw = ((atan2((double)a, (double)b)) / M_PI) * (180.0);
__NOP();
__NOP();
__NOP();The result from SW is 45 (as expected).
However the result from HW is 43.2.
WHY??
