求助 :stm32 fft 计算幅值正确 ,但是计算相位错误,求救

2019-12-08 14:36发布

求助:用stm32对交流电压电流进行信号采集,使用双adc同步模式。同事采集信号。将采集的adc结果进行fft变换,
fft变换的结果好像有问题,我用的是dsp库进行操作的 ,结果中计算的直流分量以及基波分量基本没有问题,但是计算的相位值却有很大的误差,几乎就是错误的 ,请大虾们指教。
我的思路是将采集到的信号 进行筛选 出电压波形为一个整周波,即相位从0度开始 到0度结束,那么进行fft变换后的电压基波相位应该为0,但是实际中测得的相位将近有45度,这肯定是错误的,我的fft变换程序如下
void fft(u32 *fftout,u32 *fftdatain)
{
u32 x[NPT],y[NPT];            
u16 real[NPT],imag[NPT];                               
u16 i;
for(i=0;i<1024;i++)
{
   real=(u16)(0x0000ffff&fftdatain);
   imag=(u16)0;
}
for(i=0;i<1024;i++)
{       
        x=(u32)0;
        x=(u32)real;
        //x=(((u16)(real)) | ((u32)(imag<<16)));
}         
cr4_fft_1024_stm32(y,x,(u16)1024);
for(i=0;i<1024;i++)
        fftout=y;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
selina1983
1楼-- · 2019-12-10 20:39
mark
281313005
2楼-- · 2019-12-10 21:23
火前留名
kuanglf
3楼-- · 2019-12-10 22:50
 精彩回答 2  元偷偷看……
zhengensong
4楼-- · 2019-12-11 00:57
留下以后参考,最近也在研究FFT
zhengensong
5楼-- · 2019-12-11 02:46
7楼提供的参考代码里边在计算虚部和实部的时候除以了32768,我想知道这个是怎么回事儿,求解
linux-0405209
6楼-- · 2019-12-11 07:35
zhaowork 发表于 2011-9-9 13:31
回复【楼主位】zhaowork
-----------------------------------------------------------------------

请问楼主你是如何解决相位的问题的?
我现在的问题和你描述的一样,FFT之后,频率和幅值都算是准,但是相位角总是不一样,每次采集计算之后,结果都不一样

一周热门 更多>