Hi!
I'm working on using the SAADC in 14-bit sampling mode (oversampling set to x2) using nRF SDK 17. The supply voltage for my chip is 3.3V, and I have the reference set to VDD4 with a gain of 4. My understanding is that I should be able to get a resolution of roughly 0.2mV per bit with some fudge factor of noise.My sampling rate is roughly once per second with an acquisition time of 3us.
Please reference the rough schematic below for details. I'm experimenting with using the SAADC to measure the shunt voltage from a battery management system to a given attached battery. In the example I chose a current of 100mA, which should result in a shunt voltage of 13mV and a measured differential (between diff0 and diff1) of 5mV. Unfortunately this example, and even the case where I'm pumping 1A through the circuit do not give me the values I expect when compared to a DMM. Is there something weird going on with the extra apparent resistance due to the voltage divider? Maybe the SAADC isn't as accurate as I thought? I'm at a bit of a loss at the moment. Below is also some of the configuration code:

nrf_saadc_channel_config_t conf = {.resistor_n = NRF_SAADC_RESISTOR_DISABLED,
.resistor_p = NRF_SAADC_RESISTOR_DISABLED,
.gain = NRF_SAADC_GAIN1_4,
.reference = NRF_SAADC_REFERENCE_VDD4,
.acq_time = NRF_SAADC_ACQTIME_3US,
.mode = NRF_SAADC_MODE_DIFFERENTIAL,
.burst = NRF_SAADC_BURST_DISABLED,
.pin_p = convert_to_saadc_address(coil_pin),
.pin_n = convert_to_saadc_address(diff_pin)};
nrf_drv_saadc_config_t saadc_config = NRF_DRV_SAADC_DEFAULT_CONFIG;
saadc_config.resolution = NRF_SAADC_RESOLUTION_14BIT;
Thanks!
