📄 ade7758-fft.c.svn-base
字号:
/****************************************************************************************
** 函数名称 : FFT()
** 函数功能 : 快速傅立叶变换 //for voltage 16bit
** pdataR : 采样的数据
** HamoData : 变换后的值
****************************************************************************************/
void FFT(int16 *pdataR,int16 *HamoData)
{
unsigned int m,n;
long int tmp1;
long int tmp2;
long int tmp;
int dataR,dataI;
for (m=1;m<33;m++) /* 1-20 hamonic */
{
tmp1=0;
tmp2=0;
for(n=0;n<64;n++)
{
tmp=(long)sintbl[(m*n+16)%64]*pdataR[n];
tmp1+=tmp>>20;
tmp=(long)sintbl[(m*n)%64]*pdataR[n];
tmp2+=tmp>>20;
}
dataR=tmp1;
dataI=tmp2;
tmp1=(long)dataR*dataR;
tmp1>>=1;
tmp2=(long)dataI*dataI;
tmp2>>=1;
tmp=tmp1+tmp2;
tmp=sqrt(tmp);
HamoData[m-1]=tmp;
}
}
/****************************************************************************************
** 函数名称 : CurFFT()
** 函数功能 : 快速傅立叶变换//for current 24bit
** pdataR : 采样的数据
** HamoData : 变换后的值
****************************************************************************************/
void CurFFT(int32 *pdataR,int32 *HamoData)
{
unsigned int m,n;
long int tmp1;
long int tmp2;
long int tmp;
int dataR,dataI;
for (m=1;m<33;m++) /* 1-20 hamonic */
{
tmp1=0;
tmp2=0;
for(n=0;n<64;n++)
{
tmp=(long)sintbl[(m*n+16)%64]*pdataR[n];
tmp1+=tmp>>20;
tmp=(long)sintbl[(m*n)%64]*pdataR[n];
tmp2+=tmp>>20;
}
dataR=tmp1;
dataI=tmp2;
tmp1=(long)dataR*dataR;
tmp1>>=1;
tmp2=(long)dataI*dataI;
tmp2>>=1;
tmp=tmp1+tmp2;
tmp=sqrt(tmp);
HamoData[m-1]=tmp;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -