大家好,我本来是想得到一个10位有效的结果。
起初由于没有仔细阅读手册,使用了10位分辨率(HAL_ADC_RESOLUTION_10),用了HAL接口HalAdcRead(HAL_ADC_CHANNEL_0, HAL_ADC_RESOLUTION_10)这种方式去读P0.0脚,当P0.0脚输入为0.75V电压,参考电压为AVDD=3.3V时,得到的结果是116,即乘以了2^9,说明有效位是9位,这与手册中描述一致。
然而,当我将分辨率配置成12,即希望得到手册中说的10位有效位时,理论结果应该是 0.75 / 3.3 * (2 ^ 10) = 232,但是实际得到的结果却是463,正好大了1位,即11位有效。并不是手册中的10位有效。
当我继续继续将分辨率配置为14时,希望得到12位有效位,结果却是得到 0.75 / 3.3 * (2 ^ 13) = 1862. 即13位有效,不是12位,想问下这是怎么回事呢?我想得到10位有效应该怎么配置?
Viki Shi:
ADCH的最高位是符号位,所以12位分辨率实际上只有11位。推荐个详细分析供参考: blog.csdn.net/…/61616612
关东糖:
回复 Viki Shi:
请问为什么手册写的是12位分辨率10位ENOB呢?
Viki Shi:
回复 关东糖:
这个12bit是包含符号位的
YiKai Chen:
回复 关东糖:
參考一下 www.maximintegrated.com/…/748
关东糖:
回复 Viki Shi:
是的,但是去掉符号位也是11位,为什么手册写的是10BIT ENOB呢?
关东糖:
回复 YiKai Chen:
谢谢,但是似乎没有说明11位有效和文档中10bit ENOB的关系。
xyz549040622:
回复 关东糖:
正常,ENOB都是小于分辨率的,某些国产AD这个下降的更厉害,至于为什么,这个参数值与测试频率及信噪比有关。
关东糖:
回复 xyz549040622:
也就是说我需要手动除以2咯?
da qin zheng sheng:
回复 da qin zheng sheng:
这个链接是官方的说法,可以参考。