搜索
bottom↓
回复: 23

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

[复制链接]

出0入0汤圆

发表于 2011-8-23 18:32:25 | 显示全部楼层 |阅读模式
求助:用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;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

 楼主| 发表于 2011-8-23 18:35:24 | 显示全部楼层
注:fft函数进行说明,其中fftout指针指向了 fft运算结果数组,fftdatain 指针指向了 将要进行fft变换的数组,即adc采集的值,

出0入0汤圆

 楼主| 发表于 2011-8-23 18:36:53 | 显示全部楼层
期待高手们 指教  小弟在此谢过了

出0入0汤圆

 楼主| 发表于 2011-8-23 22:36:49 | 显示全部楼层
回复【楼主位】zhaowork
-----------------------------------------------------------------------

大侠们 快点来呀

出0入0汤圆

 楼主| 发表于 2011-9-9 13:31:34 | 显示全部楼层
回复【楼主位】zhaowork
-----------------------------------------------------------------------

呵呵 没有人给顶啊,自己顶一下,算了,自己已经搞定,所有 的功能都完成精度达到0.02%
可以说还算行,搞了好多天终于解决

出0入0汤圆

发表于 2011-9-9 17:17:23 | 显示全部楼层
能帮我做fft程序吗?有偿的。

出0入0汤圆

发表于 2011-9-11 23:08:21 | 显示全部楼层
回复【5楼】wk9591
-----------------------------------------------------------------------

你需要多少点的FFT?我有64点和128点的C程序,可以免费给你参考

点击此处下载 ourdev_676041FZH355.rar(文件大小:2K) (原文件名:Test.rar)

出0入0汤圆

发表于 2011-9-13 21:37:16 | 显示全部楼层
楼主用的芯片型号是什么?我现在用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

出0入0汤圆

发表于 2011-9-14 10:23:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-1 09:41:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-17 11:46:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-3 22:10:27 | 显示全部楼层
mark!

出0入0汤圆

发表于 2012-4-16 10:46:17 | 显示全部楼层
MARK!                                

出0入0汤圆

发表于 2012-5-3 19:25:05 | 显示全部楼层
我也是用DSP库进行的FFT,不管信号从哪开发采样,结果都正常(我用的地信号发生器测量的)不知道楼主怎么测量得到它的相位的。我也也研究通过FFT求相位

出0入0汤圆

发表于 2012-5-23 23:11:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-4-1 17:24:29 | 显示全部楼层
火前留名

出0入12汤圆

发表于 2014-4-2 23:11:36 | 显示全部楼层
谢谢分享记号备用

出0入0汤圆

发表于 2014-4-3 10:21:59 | 显示全部楼层
留下以后参考,最近也在研究FFT

出0入0汤圆

发表于 2014-4-3 10:26:49 | 显示全部楼层
7楼提供的参考代码里边在计算虚部和实部的时候除以了32768,我想知道这个是怎么回事儿,求解

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-5-23 15:46:21 | 显示全部楼层
zhaowork 发表于 2011-9-9 13:31
回复【楼主位】zhaowork
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2019-7-11 18:37:14 | 显示全部楼层
请问楼主,问题解决了吗

出140入8汤圆

发表于 2019-7-12 07:07:24 | 显示全部楼层
22楼这挖坟挖的太没水准了……

出0入0汤圆

发表于 2019-12-6 17:34:43 来自手机 | 显示全部楼层
linux-0405209 发表于 2014-5-23 15:46
请问楼主你是如何解决相位的问题的?
我现在的问题和你描述的一样,FFT之后,频率和幅值都算是准,但是相 ...

大哥能说下,频率怎么算的吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 20:59

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表