我用定时器2控制ADC采样,然后用dma转换,之后对得到的数据进行fft测相位,但是得到的结果非常不准确,并且大范围跳动着,这是为什么呢?
代码如下:
arm_cfft_f32(&arm_cfft_sR_f32_len1024, FFTin, 0, 1);
arm_cmplx_mag_f32(FFTin, FFTout, NPT);
//得到真实幅值
FFTout[0] /= 1024;
for ( i = 1; i < NPT; i++)//输出各次谐波幅值
{
FFTout[i] /= 512;
}
//相位
for(i = 1;i<NPT/2;i++)
{
Phase[i] = atan2(FFTin[i*2+1], FFTin[i*2+0]);
Phase[i] = Phase[i]*(360/PI2);//求相位
}