小弟这段时间尝试用刚学的知识,做了个小作品——水柱型的音频谱显示;在做完FFT处理后,音频谱的显示不知道怎么决策好,我一开始是选择数组lBUFMAG的10个位的平均数来作为PWM的占空比的,不过,输出的效果很不理想,想问问大家是怎么处理这块的;(注释:目前我只用到3个PWM来输出显示)
就是用ADC采集信号,定时器控制ADC采集的频率(还没学习DMA,所以用中断的方式控制),再用PWM加三极管控制高速直流电机。我是用DSP库来做FFT的,代码如下;
void powerMag(long nfill)
{
int32_t lX,lY;
uint32_t i;
for (i=0; i < nfill; i++)
{
lX= (lBUFOUT<<16)>>16; /* sine_cosine --> cos */
lY= (lBUFOUT >> 16); /* sine_cosine --> sin */
{
float X= NPT*((float)lX)/32768;
float Y = NPT*((float)lY)/32768;
float Mag = sqrt(X*X+ Y*Y)/NPT;
lBUFMAG = (uint32_t)(Mag*65536);
}
}
}
|