Hi all,
I'm using a B404X for a precision analog measurement application and have been digging into ADC accuracy. I noticed that Nordic's nRF52840 product spec explicitly recommends running CALIBRATEOFFSET at startup and whenever ambient temperature changes by more than 10°C, since the SAADC has a temperature-dependent offset.
I took a look at the Device OS source (hal/src/nRF52840/adc_hal.cpp) and found that hal_adc_calibrate() currently just returns SYSTEM_ERROR_NOT_SUPPORTED — so it seems like no calibration is being performed at any point by the OS.
Two questions for the community:
-
Can anyone confirm whether Device OS performs SAADC offset calibration anywhere else in the stack that I may have missed?
-
For those doing precision analog work on B404X or similar nRF52840-based Particle devices — what's your approach to working around this? I'm considering implementing a software digital offset calibration (reading a known voltage periodically and correcting for drift), but curious if there are established patterns people use within the Particle ecosystem.
Thanks!