This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

SAADC sampling value problem

Hi,I have a problem.I used three channels of ADC sampling in the project.If I connect the ADC port directly to GND,the ADC value of the sample is not equal to 0.But if I change another board and download the same program, the ADC value will be 0.Is this a difference between modules or is the ADC port broken?What am I doing wrong ? Please help

Parents
  • Is this on a DK or custom PCB?

    My first guess is either a burnt ESD protection diode in the gpio, the failure mode is usually a short to VDD or GND, depending on which of the two diodes blew.

    If it is a custom PCB It could be a bad solder joint. 

  • Custom PCB.

    At the beginning, the ADC port is connected to the light sensor, and a black cloth is used to cover the light sensor.

    The analog voltage of the light sensor will reach 0V.

    The voltage detected by NRF52832 is not 0.

    I used the voltmeter again, and the voltmeter said 0V.

    That's why I have this problem.A different board would not present this problem.

    As you said, ESD diodes protect ADC ports, so I measure the voltage from the diode to GND at 0.3V?

    What surprises me is that the two plates behave differently.

  • Vitamin said:
    The voltage detected by NRF52832 is not 0.

    What is it? 

    Vitamin said:
    As you said, ESD diodes protect ADC ports, so I measure the voltage from the diode to GND at 0.3V?

    It should be a ~0.5V drop between GND and pin, and VDD and pin. You need to remove the light sensor when measuring btw. 
     

    Vitamin said:
    What surprises me is that the two plates behave differently.

     What do you mean by plates?

  • 1.I mean the voltage I measured with NRF52832 is not equal to 0,but when I measured with the voltmeter, the voltmeter show 0V.

    2.I connected the ADC port to GND, and the data measured by simulation was 7.03125 mV.I only use SWD prot and AIN5 with connected  GND.

    3.I mean the voltage measured by two custom PCBS is different.They have the same design and code.

Reply Children
  • From Digital output:
    "The result generated by the ADC will deviate from the expected due DC errors like offset, gain, differential non-linearity (DNL), and integral non-linearity (INL). See Electrical specification for details on these parameters. The result can also vary due to AC errors like non-linearities in the GAIN block, settling errors due to high source impedance and sampling jitter. For battery measurement the DC errors are most noticeable.

    The ADC has a wide selection of gains controlled in the GAIN field of the CH[n].CONFIG register. If CH[n].CONFIG.REFSEL=0, the input range of the ADC core is nominally ±0.6 V differential and the input must be scaled accordingly.

    The ADC has a temperature dependent offset. If the ADC is to operate over a large temperature range, we recommend running CALIBRATEOFFSET at regular intervals, a CALIBRATEDONE event will be fired when the calibration is complete"


    Try running the automatic offset calibration on the two PCBs and compare the results of your new measurements. 

  • Yes.If I running CALIBRATEOFFSET after the SAADC initialization,the voltage I measured with NRF52832 is equal 0.The problem is solved.Thanks a lot.

Related