高级会员

- 积分
- 994
- 金钱
- 994
- 注册时间
- 2016-7-22
- 在线时间
- 318 小时
|
1金钱
本帖最后由 hi我歌月徘徊 于 2016-10-26 14:01 编辑
使用了探索者实验47——2DSP FFT测试,
测试完例程ok,然后我又AD采样一路直流电压,然后DMA发送1024个数据存起来。
然后根据原来的例程,把原来要进行fft的入口参数进行修改
[mw_shl_code=applescript,true]for(i=0;i<FFT_LENGTH;i++)
{
fft_inputbuf[2*i]=ADC1ConvertedValue;
fft_inputbuf[2*i+1]=0;
}[/mw_shl_code]
ADC1ConvertedValue[1024]是我AD采样结果
其他均不变 然后下载进开发板,按键key0 串口返回fft结果
1024 point FFT runtime:0.585ms
FFT Result:
fft_outputbuf[0]:2045429.000000
fft_outputbuf[1]:1230.973755
fft_outputbuf[2]:135.815155
fft_outputbuf[3]:1285.064697
fft_outputbuf[4]:1249.406982
fft_outputbuf[5]:172.963455
fft_outputbuf[6]:1081.007080
fft_outputbuf[7]:2533.878418
fft_outputbuf[8]:1983.940918
fft_outputbuf[9]:1012.018494
fft_outputbuf[10]:944.124329
因为我AD采样的是直流1.8v电压,根据分析:第 0 点,即直流分量,其 FFT 变换后的模值应该是原始信号幅值的 N 倍, N=1024,然后其他点,模值应该是原始信号幅值的 N/2 倍,
计算一下串口返回的数据: 第0点 2045429/1024=1997.489 直流电压的直流分量不就应该反映电压的真实值吗??? 还有直流电压频率为0 其他点不都应该为0吗 为什么还有数值存在呢??? 刚接触fft 求解
采样的AD值转化为电压之后
[mw_shl_code=applescript,true]fft_inputbuf[2*i]=(float)ADC1ConvertedValue*3.3/4096;
fft_inputbuf[2*i+1]=0;[/mw_shl_code]fft之后的数据
fft_outputbuf[0]:2108.405029 2108.405029 0.000000 -131.702850
fft_outputbuf[1]:0.297549 0.297549 0.000286 -131.702850
fft_outputbuf[2]:0.515750 0.045758 0.513716 -131.702850
fft_outputbuf[3]:0.770250 0.241686 -0.731350 -131.702850
fft_outputbuf[4]:0.442877 0.067056 -0.437771 -131.702850
fft_outputbuf[5]:0.669347 0.479659 -0.466854 -131.702850
fft_outputbuf[6]:0.261266 -0.155807 -0.209725 -131.702850
fft_outputbuf[7]:0.859252 -0.002719 -0.859248 -131.702850
fft_outputbuf[8]:0.636206 0.437347 -0.462045 -131.702850
fft_outputbuf[9]:0.639701 0.504262 0.393620 -131.702850
fft_outputbuf[10]:0.548882 0.489041 -0.249219 -131.702850
直流分量为2108/1024=2.058v 实测电压为2.06v 这样fft才对嘛~~
|
|