ADC中的滤波算法

STM32的AD最大输入时钟不超过14MHZ,最高采样速度1us,可以采用DMA或者内部的基本定时器/高级定时器来触发,利用模拟看门狗监控所选择的的所有通道,如果超过模拟的 阀[fá] 值,将产生中断。

单次AD+DMA无意义,一般是通过DMA将AD高速采集的值进行缓冲,缓冲完毕进入DMA中断进行滤波后输出。http://blog.csdn.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;
}

原文地址:https://www.cnblogs.com/jieruishu/p/6378894.html