硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7291|回复: 5
收起左侧

[DSP] stm32F1xx 用官方DSP库进行FFT变换,幅值计算?

[复制链接]

12

主题

134

回帖

170

积分

初级会员

积分
170
发表于 2014-7-21 18:13:31 | 显示全部楼层 |阅读模式
由于基础不好,一直不明白下在这个函数,麻烦各位大大帮我解释一下,非常感谢!
void PowerMag(uint16_t nfill)
{
  int32_t lX,lY;
  uint16_t i;
  for (i=0; i < nfill/2; i++)
  {
    lX= (lBUFOUT<<16)>>16; /* sine_cosine --> cos */
    lY= (lBUFOUT >> 16);   /* sine_cosine --> sin */   
    {
      float X = nfill*((float)lX)/32768;
      float Y = nfill*((float)lY)/32768;
      float Mag = sqrt(X*X + Y*Y)/nfill;
     
      lBUFMAG = (u32)(Mag * 65536);
    }
  }         
}


    for(i=0;i<NPT;i++)
    {
        lBUFIN=((int32_t)(Read_ADC)<<16;  
    }
    cr4_fft_1024_stm32(lBUFOUT,lBUFIN,NPT);
    PowerMag(NPT);            

上面函数计算出幅值后怎么计算才能对应上电压单位(mv)?
我用的AD是16位的,参考电压5v. 我试着用lBUFMAG[]里的值当AD值,计算的结果发现误差有20倍。
这怎么算呢?谢谢。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2014-7-21 23:34:59 | 显示全部楼层
帮顶,这个我也好久没有研究了,最近刚开始DSP教程,也想要回顾下
回复

使用道具 举报

7

主题

53

回帖

74

积分

初级会员

积分
74
发表于 2014-7-30 12:37:17 | 显示全部楼层
用库处理,很省事。

      /* Process the data through the CFFT/CIFFT module */
        
      arm_cfft_f32(&arm_cfft_sR_f32_len128, ADCValue, ifftFlag, doBitReverse);   
//
      /* Process the data through the Complex Magnitude Module for  
      calculating the magnitude at each bin */
      arm_cmplx_mag_f32(ADCValue, testOutput, fftSize); // 求出模值
//        
      /*   Find the maxvalue*/
      arm_max_f32(testOutput,(fftSize/2),&maxValue, &testIndexMax);   
      Um=maxValue/((float32_t)fftSize);  //幅值
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2014-7-30 22:38:00 | 显示全部楼层

回 ajaxchan 的帖子

ajaxchan:用库处理,很省事。

      /* Process the data through the CFFT/CIFFT module */
        
      arm_cfft_f32(&arm_cfft_sR_f32_len128, ADCValue, ifftFlag, doB .. (2014-07-30 12:37) 
看来用官方的库的确是个好办法。
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2014-8-19 08:34:32 | 显示全部楼层

回 ajaxchan 的帖子

ajaxchan:用库处理,很省事。

      /* Process the data through the CFFT/CIFFT module */
        
      arm_cfft_f32(&arm_cfft_sR_f32_len128, ADCValue, ifftFlag, doB .. (2014-07-30 12:37) 
谢谢大哥指点,但这个库在哪找?我下的F103的DSP库里没这些函数,求指点。
回复

使用道具 举报

7

主题

53

回帖

74

积分

初级会员

积分
74
发表于 2014-8-23 16:19:54 | 显示全部楼层

回 xiaosir 的帖子

xiaosir:谢谢大哥指点,但这个库在哪找?我下的F103的DSP库里没这些函数,求指点。 (2014-08-19 08:34)
我这个是407的库,103的没有研究过,或许不一样!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 20:33 , Processed in 0.230587 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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