ADC中的滤波算法
STM32的AD最大输入时钟不超过14MHZ,最高采样速度1us,可以采用DMA或者内部的基本定时器/高级定时器来触发,利用模拟看门狗监控所选择的的所有通道,如果超过模拟的 阀[fá] 值,将产生中断。
单次AD+DMA无意义,一般是通过DMA将AD高速采集的值进行缓冲,缓冲完毕进入DMA中断进行滤波后输出。http://blog.****.net/i792439187/article/details/8825397
采用比赛中的去掉最大最小求平均的方法
u16 ADC_Filter(u16 *Dbuff,u8 n)
{
u8 i;
u16 sum=0,aver=0,max=Dbuff[0],min=Dbuff[0];
for(i=0;i<n;i++)
{
if(Dbuff[i]>max)
max=Dbuff[i];
if(Dbuff[i]<min)
min=Dbuff[i];
sum+=Dbuff[i];
}
aver=(sum-max-min)/n;
return aver;
}