Given that you're measuring 2.2V on the pin of your chip, I agree with you calculations of about 35K impedance existing. We'll be discussing the details of your case with the hardware developers in the next couple days and will hopefully get back to you with relevant information.
In the meantime, I'd like to suggest a work around to your problem: If you replace the bottom 10K resistor in your voltage divider with a 14K resistor, you should compensate for the such small impedance you're seeing on the pin.
14K in parallel with 35K yields 10K of resistance. This should then act as a 10K-10K voltage divider.
Currently we use 1K-1K as voltage divider and the data from ADC port is quite accurate. Because 35K ohm is much larger than 1K.
However, we want to confirm whether this problem is caused by low input resistance of ADC port. Usually ADC port input impedance should be quite large, (Mohm).
If you have any update, please let me know.
Do you have any update about this ADC input resistance value?
1 of 1 people found this helpful
The only further recommendation is to attempt calibration of the ADC using a known voltage (can even use core voltage of the chip).
You said that this occurs on two separate module chips. Are you using the same pins on both? If so, can you attempt to use different pins?
Additionally, have the pins you're using been configured in any way prior to being used as an ADC input? If so, please wipe the configuration. If not, you may attempt disabling them in the code anyway.
Thanks for reply,
I did tried to calibrate ADC port using the adc_adcCalibrate() function, however, it doesn't make too much different. I would say without ADC calibration the accuracy can be 95%, after ADC calibration it may be improved 99%.
However, if the resistance is too large, the ADC error will also be much larger and cannot be corrected by calibration.
I have tested on BCM20737 and BCM20737S, both of them have the same issue. Also the pins are always used as ADC input from the beginning declaration of the firmware.