求助 :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条回答
zhaowork
1楼-- · 2019-12-08 21:01
期待高手们 指教  小弟在此谢过了
zhaowork
2楼-- · 2019-12-09 02:53
回复【楼主位】zhaowork
-----------------------------------------------------------------------

大侠们 快点来呀
zhaowork
3楼-- · 2019-12-09 05:48
回复【楼主位】zhaowork
-----------------------------------------------------------------------

呵呵 没有人给顶啊,自己顶一下,算了,自己已经搞定,所有 的功能都完成精度达到0.02%
可以说还算行,搞了好多天终于解决
wk9591
4楼-- · 2019-12-09 06:51
能帮我做fft程序吗?有偿的。
linjinming
5楼-- · 2019-12-09 08:40
 精彩回答 2  元偷偷看……
wang6830210
6楼-- · 2019-12-09 13:51
楼主用的芯片型号是什么?我现在用stm32f103rbt6做1024点fft,提示空间不够啊

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

一周热门 更多>