an ADC issue

I used the battery routine to test the ADC, and the voltage measured was 3 times larger.

How to fix this problem?

Bat+ is 3.3 V.

dts setting:

    vbatt {

        compatible = "voltage-divider";
 
        io-channels = <&adc 5>;
 
        output-ohms = <22000>;
 
        full-ohms = <(47000 + 22000)>;
 
        power-gpios = <&gpio1 1 1>;
 
     };

log:

			NRF_SAADC_Type *saadc = NRF_SAADC;
			LOG_WRN("val %u, rc: %d, ref %u, full %u, out %u, config 0x%x", val, rc, adc_ref_internal(ddp->adc),
			 dcp->full_ohm , dcp->output_ohm,  saadc->CH[0].CONFIG);

Include C5(0.1uF):

[00:01:15.759,155] <wrn> adc: val 1269, rc: 3980, ref 600, full 69000, out 22000, config 0x1050000
[00:01:16.259,216] <wrn> adc: val 1268, rc: 3976, ref 600, full 69000, out 22000, config 0x1050000
[00:01:16.759,216] <wrn> adc: val 1269, rc: 3980, ref 600, full 69000, out 22000, config 0x1050000
[00:01:17.259,246] <wrn> adc: val 1268, rc: 3976, ref 600, full 69000, out 22000, config 0x1050000
[00:01:17.759,307] <wrn> adc: val 1268, rc: 3976, ref 600, full 69000, out 22000, config 0x1050000

Remove C5(0.1uF):
[00:03:15.407,897] <wrn> adc: val 3332, rc: 10450, ref 600, full 69000, out 22000, config 0x1050000
[00:03:15.907,928] <wrn> adc: val 3332, rc: 10450, ref 600, full 69000, out 22000, config 0x1050000
[00:03:16.407,989] <wrn> adc: val 3330, rc: 10444, ref 600, full 69000, out 22000, config 0x1050000
[00:03:16.908,020] <wrn> adc: val 3332, rc: 10450, ref 600, full 69000, out 22000, config 0x1050000
[00:03:17.408,081] <wrn> adc: val 3333, rc: 10453, ref 600, full 69000, out 22000, config 0x1050000

Related