Hi all,
I'm working with the nRF54L and encountering persistent SAADC issues after short deep sleep cycles.
Setup:
- SAADC is configured in differential mode with oversampling enabled. It is configured for very high sampling rate (in the kHz range).
- Before entering deep sleep, I call
nrfx_saadc_abort()followed bynrfx_saadc_uninit()to halt conversions and cleanly shut down the peripheral. - After wake-up, I reinitialize the SAADC and begin sampling.
- If the deep sleep duration is short (e.g., <2s), the SAADC returns consistently erroneous values after wake—these do not self-correct over time.
- If the deep sleep is long (e.g., several seconds or more), the SAADC readings return to normal immediately after wake.
Notes:
- GPIOs and reference voltages are stable.
- No custom calibration routines are in place yet.
- Using internal reference, differential mode, and oversampling via
NRFX_SAADC_CONFIG_OVERSAMPLE. - The issue persists across multiple short sleep cycles and appears duration-dependent.
Questions:
- Is there a known issue with SAADC state retention or reference settling when using differential mode + oversampling on nRF54L?
- Could this be tied to power domain ramp-up, reference voltage stabilization, or peripheral clock synchronization?
- Has anyone implemented a reliable workaround—e.g., dummy reads, forced calibration, or delay injection—after short sleep wake?
Any insights or shared experiences would be greatly appreciated. I can share code snippets or timing diagrams if helpful.
Thanks!