⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ade7758-fft.c.svn-base

📁 电能量信息采集程序,很适合于电力行业做点能量采集的人员参考应用
💻 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 + -