int remotePlotData[100];
float r_f[100];
u16 remotePlotDataLen;
u32 remotePlotDataAmp;
const float FIR_TAB[72]={
0.0f,-0.00012906f,-0.00022804f,0.0f,0.00055461f,0.00080261f,0.0f,-0.0015291f,-0.0020364f,
0.0f,0.0034223f,0.0043393f,0.0f,-0.0067311f,-0.0082564f,0.0f,0.012113f,0.014513f,
0.0f,-0.020472f,-0.024139f,0.0f,0.033213f,0.038823f,0.0f,-0.052964f,-0.061984f,
0.0f,0.086061f,0.10271f,0.0f,-0.15405f,-0.19757f,0.0f,0.40884f,0.82466f,
1.0f,0.82466f,0.40884f,0.0f,-0.19757f,-0.15405f,0.0f,0.10271f,0.086061f,
0.0f,-0.061984f,-0.052964f,0.0f,0.038823f,0.033213f,0.0f,-0.024139f,-0.020472f,
0.0f,0.014513f,0.012113f,0.0f,-0.0082564f,-0.0067311f,0.0f,0.0043393f,0.0034223f,
0.0f,-0.0020364f,-0.0015291f,0.0f,0.00080261f,0.00055461f,0.0f,-0.00022804f,-0.00012906f
};
#define FIR_BLOCK_SIZE (1024/8)
static float FIRState[FIR_BLOCK_SIZE+24-1];
void DispPlot(float *dat,u32 count,u32 period)
{
int i;float scale,mid;
arm_fir_interpolate_instance_f32 fir_def;
arm_fir_interpolate_init_f32(&fir_def,3,72,(float*)FIR_TAB,FIRState,FIR_BLOCK_SIZE);
for(i=0;i<FIR_BLOCK_SIZE+24-1;i++)
{
FIRState[i]=0;
}
arm_fir_interpolate_f32(&fir_def,dat,FIROutputBuffer,FIR_BLOCK_SIZE);
//arm_fir_interpolate_f32(&fir_def,dat+FIR_BLOCK_SIZE,FIROutputBuffer+FIR_BLOCK_SIZE,FIR_BLOCK_SIZE);
int zero=FindZeroIndex(FIROutputBuffer+40,count)+40;
if(period==0)return;
maxX=period;
period=period*34/10;
//zero+=period;
if(zero+period>count)zero=0;
if(zero+period>count)period=count;
maxY=1.5;minY=-1.5;
Plot(100,0,240,120,FIROutputBuffer+zero+50,period*2,false);
//Plot(80,0,240,120,dat,count);
Plot(100,120,240,120,fft_inputbuf,count/2,true);
minY=findMin(FIROutputBuffer,FIROutputBuffer+count);maxY=findMax(FIROutputBuffer,FIROutputBuffer+count);
remotePlotDataAmp=(maxY-minY)/2.0f*1000.0f;
scale=255.0f/(maxY-minY);mid=(minY+maxY)/2;
if(period<=100)
{
remotePlotDataLen=period;
for(i=0;i<period;i++)
{
remotePlotData[i]=(FIROutputBuffer[zero+i]-mid)*scale;
}
}else{
remotePlotDataLen=100;
for(i=0;i<100;i++)
{
remotePlotData[i]=(FIROutputBuffer[zero+i*period/100]-mid)*scale;
}
}
for(i=0;i<remotePlotDataLen;i++)
{
r_f[i]=remotePlotData[i];
}
最新发布