能引发思考的好贴
必须是2^N, 而不应该是2^n -1,用大脚指头想一想:降到1位或2位的ADC,难道分母能是0或3吗? {:ciya:}
显然,2位ADC的01必须是0.25而不会是0.333333, 千万不要当大脚指头哦
https://static.mianbaoban-assets.eet-china.com/xinyu-images/MBXY-CR-5f5bf53641582b6ea7189e2a7906ccfc.png
12位ADC正确的是除4096, ADC基准FS, ADC满量程实际是FS减一个LSB.
认为ADC满量程就是基准电压其实是不对的, 不过除4096还是4095对结果影响有限.
实际应该是4095,1023,但用4096,1024也是可以的,误差在1~几千分之一,对实际没有影响
一直是用STC官方的公式:Ux = Vref * Nx / Nref
Vref = 1190mV (读取芯片信息可以查看这个值的)
Nref = Get_ADCResult(15);
Nx= 测量的通道的值
都不用管它是4095,1023,还是4096,1024。
我的理解是,基准电压为5V的12位adc是把电压分成4096段,电压在这一段中,比如是0v和0.00001V都属0x00段,所以adc的读值是0x00;当电压为4.99999和4.99988这样的电压时属于0xFFF段,因此读值是0xfff;
ADC读到的值都是一个区间值;
简单的总结一下:认为要除以4096的是理论派,认为要除以4095的是实践派。不管你觉得这只是个读数问题还是只是转换原理中的LSB问题,现实应用中,量程的最大值理应对应Vref+值,并应该严格一致。至于说误差范围可以说通,但追求完美的人觉得不严谨。5V的Vref,ADC的结果0xFFFF时,理应就是5V,而不应该是4.998V。