不久前的某天早上,有个群友提出了一个貌似很简单的问题,没想到引发了激烈的争论。前前后后多位高手杀入战团,引经据典,各抒己见。世界上就怕认真二字,不管最后谁对谁错,让我们先为这些同学们的精神点赞吧!
问题是这样的:
到这里我们可以自己先想一下,我们自己平常用的是1023还是1024呢?先写下来再往下看吧。
你看,到这里已经分成了两大阵营: 1023派和1024派。好像都很有道理啊,10bit最大不就是1023吗?究竟谁对谁错呢?
10bit ADC能得到的最大值是1023,如果除以1024的话,那我们永远测不到满量程,不过10bit明明是表示1024嘛。有点儿蒙圈了。
正在纠结该支持1023还是1024,没想到又杀出来一派,实践检验派。你们都别争了,咱们接个最高参考电压VREF看一下不就结了吗?这个挺狠。
有同学发现老外也挺纠结这个问题的,下面是一个论坛里的讨论帖子。
https://forum.allaboutcircuits.com/threads/why-adc-1024-is-correct-and-adc-1023-is-just-plain-wrong.80018/
THE_RB同学使用了一个化繁为简的方法,让我们直观的了解到问题出在哪儿。如果ADC参考电压为5V,我们假设ADC输出结果只有5个值,即0,1,2,3,4。那我们是用5除(也就是n),还是用4除(也就是n-1)能得到更精确的结果呢?
下面我们看一个3bit ADC,数字输出和模拟量输入之间的对应关系图(图片来源:ADI培训手册)。我们看到在输入接近0V或Full Scale满量程的时候,会产生相对来说大一点的偏差。
有兴趣的同学可以用ADC输出值反推一下电压,看是用7除还是用8除更合适。对于10bit的ADC来说,虽然用1023和1024去除,得出的结果差别非常小,但是用1024可以在全量程范围内得到比较小的偏差和很好的一致性。
看到这里,你对该除1023还是1024还有疑问吗?