ADC的过采样技术其实原理很简单,很容易明白,怎样实现提高分辨率?假定环境条件:10位ADC最小分辨电压1LSB为1mv假定没有噪声引入的时候,ADC采样上的电压真实反映输入的电压,那么小于1mv的话,如ADC在0.5mv是数据输出为0我们现在用4倍过采样来,提高1位的分辨率,当我们引入较大幅值的白噪声:1.2mv振幅(大于1LSB),并在白噪声的不断变化的情况下,多次采样,那么我们得到的结果有真实被测电压白噪声叠加电压叠加后电压ADC输出ADC代表电压0.5mv1.2mv1.7mv11mv0.5mv0.6mv1.1mv11mv0.5mv-0.6mv-0.1mv00mv0.5mv-1.2mv-0.7mv00mvADC的和为2mv,那么平均值为:2mv/4=0.5mv!!!0.5mv就是我们想要得到的这里请留意,我们平时做滤波的时候,也是一样的操作喔!那么为什么没有提高分辨率?????是因为,我们做滑动滤波的时候,把有用的小数部分扔掉了,因为超出了字长啊,那么0.5取整后就是0了,结果和没有过采样的时候一样是0,而过采样的方法时候是需要保留小数部分的,所以用4个样本的值,但最后除的不是4,而是2!那么就保留了部分小数部分,而提高了分辨率!从另一角度来说,变相把ADC的结果放大了2倍(0.5*2=1mv),并用更长的字长表示新的ADC值,这时候,1LSB(ADC输出的位0)就不是表示1mv了,而是表示0.5mv,而(ADC输出的位1)才是原来表示1mv的数据位,下面来看看一下数据的变化:ADC值相应位98765432100.5mv测量值00000000000mv(10位ADC的分辨率1mv,小于1mv无法分辨,所以输出值为0)叠加白噪声的4次过采样值的和00000000102mv滑动平均滤波2mv/4次00000000000mv(平均数,对改善分辨率没作用)过采样插值2mv/2000000000012mv/2=0.5mv,将这个数作为11位ADC值,那么代表就是0.5mv这里我们提高了1位的ADC分辨率这样说应该就很简单明白了吧,其实多出来的位上的数据,是通过统计输入量的分布,计算出来的,而不是硬件真正分辨率出来的,引入噪声并大于1LSB,目的就是要使微小的输入信号叠加到ADC能识别的程度(原ADC最小分辨率).理论来说,如果ADC速度够快,可以无限提高ADC的分辨率,这是概率和统计的结果但是ADC的采样速度限制,过采样令到最后能被采样的信号频率越来越低,就拿stm32的ADC来说,12ADC,过采样带来的提高和局限分辨率采样次数每秒采样次数12ADC11M13ADC4250K14ADC1662.5K15ADC6415.6K16ADC2563.9K17DC102497618ADC409624419ADC163846120ADC6553615要记住,这些采样次数,还未包括我们要做的滑动滤波,看到这些文档,啰啰嗦嗦说一大堆公式什么的,忍不住就随便写了些,如果我是做IC的,我一定要求把文档写到白话文一样,小学生都能看明白的,自然小学生都会用,人多用了,才有钱赚嘛,都不知道这些芯片厂是怎么推广的,写一大堆公式有什么用,这么复杂的芯片都设计了,写个文档却马马虎虎,其实不管多复杂的公式,实现起来还不是加减乘除,废话少说,有时间再写了......