本帖最后由 sky.sun.zz 于 2015-10-9 11:07 编辑
本次活动的终结篇,综合STM32F446开发板上的资源ADC+DMA+TFT+基4浮点FFT库,完成本次申请的内容,实现STM32F446频谱分析仪功能。
ADC+DMA请参考https://bbs.21ic.com/icview-1131720-1-1.html
TFT应用请参考:https://bbs.21ic.com/icview-1132216-1-1.html
FFT请参考:https://bbs.21ic.com/icview-1131010-1-1.html
在uhADCxConvertedValue[][]2维数组中保存了通道0-1的1024个转换数据,本例取通道0的数据导入inputbuf[]进行FFT转换:
for(i=0;i<1024;i++)
{
inputbuf[2*i]= uhADCxConvertedValue[0];
inputbuf[2*i+1]=0;
}
主循环函数中ADC的DMA转结束后停止ADC,进行FFT转换,并将转换结果outputbuf送TFT显示。完成后重新启动ADC进行下一次采样和信号FFT处理.
if(dmaflage==1)
{
dmaflage=0;
FFT_read();
for(j=1;j<319;j+=5)
{
LCD_Draw_Line(j,0,j,239,BLACK);
LCD_Draw_Line(j,0,j,(outputbuf[j]/4),WHITE);
}
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&uhADCxConvertedValue, ADCNB);
}
测试用的1.9KHZ信号从一片AD9850产生,输入PA0口(ADCIN0)
图中最左边的竖条是FFT转换后的直流分量,第4条是1.9KHZ的分量。
|