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

Differential ADC Anomaly on nRF9160 DK

Hi,

I'm trying to read differential ADC input with inputs configured as:

NRF_SAADC_INPUT_AIN1 (P0.014) -> POSITIVE

NRF_SAADC_INPUT_AIN2 (P0.015) -> NEGATIVE (differential mode)

I'm also using 4x oversampling, gain of 1, +-0.6V reference, 12-bit ADC and 5us acquisition time.

Unfortunately, I seem to be getting very poor results.

By grounding both inputs, I'm receiving an output value of ~350, which equates to around 103mV, which is too poor for my use case.

Any advise would be appreciated.

Regards,

Ben

Parents
  • For grounded inputs, for any given sample set (extra_samplings set to 399 - total samples = 400), there seems to be large alternating errors, such as:

    Sample 368: 415
    Sample 369: 364
    Sample 370: 416
    Sample 371: 360
    Sample 372: 414
    Sample 373: 362
    Sample 374: 415
    Sample 375: 365
    Sample 376: 417
    Sample 377: 357
    Sample 378: 416
    Sample 379: 363
    Sample 380: 418
    Sample 381: 364

    I'm also struggling to find documentation regarding the correct calibration procedure.

    At current, I'm performing NRF_SAADC_NS->TASKS_CALIBRATEOFFSET = 1; before all sampling.

    Update:

    Considering the invalid result (errata) which comes from settting VDD_GPIO > 2.1V, I've changed the VDD_GPIO to 1.8V. The error in the samples now appears to have decreased, and the samples look something like this:

    Sample 365: 209
    Sample 366: 304
    Sample 367: 211
    Sample 368: 303
    Sample 369: 213
    Sample 370: 302
    Sample 371: 213
    Sample 372: 304
    Sample 373: 213
    Sample 374: 305
    Sample 375: 210
    Sample 376: 303
    Sample 377: 212
    Sample 378: 302
    Sample 379: 213
    Sample 380: 300

    This is still not useful data for my use case.

Reply
  • For grounded inputs, for any given sample set (extra_samplings set to 399 - total samples = 400), there seems to be large alternating errors, such as:

    Sample 368: 415
    Sample 369: 364
    Sample 370: 416
    Sample 371: 360
    Sample 372: 414
    Sample 373: 362
    Sample 374: 415
    Sample 375: 365
    Sample 376: 417
    Sample 377: 357
    Sample 378: 416
    Sample 379: 363
    Sample 380: 418
    Sample 381: 364

    I'm also struggling to find documentation regarding the correct calibration procedure.

    At current, I'm performing NRF_SAADC_NS->TASKS_CALIBRATEOFFSET = 1; before all sampling.

    Update:

    Considering the invalid result (errata) which comes from settting VDD_GPIO > 2.1V, I've changed the VDD_GPIO to 1.8V. The error in the samples now appears to have decreased, and the samples look something like this:

    Sample 365: 209
    Sample 366: 304
    Sample 367: 211
    Sample 368: 303
    Sample 369: 213
    Sample 370: 302
    Sample 371: 213
    Sample 372: 304
    Sample 373: 213
    Sample 374: 305
    Sample 375: 210
    Sample 376: 303
    Sample 377: 212
    Sample 378: 302
    Sample 379: 213
    Sample 380: 300

    This is still not useful data for my use case.

Children
No Data
Related