求助:用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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
-----------------------------------------------------------------------
大侠们 快点来呀
-----------------------------------------------------------------------
呵呵 没有人给顶啊,自己顶一下,算了,自己已经搞定,所有 的功能都完成精度达到0.02%
可以说还算行,搞了好多天终于解决
compiling main.c...
linking...
SKYWORKS.axf: Error: L6406E: No space in execution regions with .ANY selector matching ad.o(.bss).
SKYWORKS.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.data).
SKYWORKS.axf: Error: L6406E: No space in execution regions with .ANY selector matching system_stm32f10x.o(.data).
SKYWORKS.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_rcc.o(.data).
SKYWORKS.axf: Error: L6406E: No space in execution regions with .ANY selector matching uart.o(.data).
SKYWORKS.axf: Error: L6406E: No space in execution regions with .ANY selector matching systick.o(.data).
SKYWORKS.axf: Error: L6406E: No space in execution regions with .ANY selector matching errno.o(.data).
SKYWORKS.axf: Error: L6407E: Sections of aggregate size 0x85c bytes could not fit into .ANY selector(s).
Target not created
一周热门 更多>