Hi,
I have a custom board using nrf 52832. I am using SDK 15.2.0 and softdevice s132 v6.1.0.
I have referred following link
Also referred nRF52 Series > nRF52832 > Errata > nRF52832 Revision 2 Errata > New and inherited anomalies.
By using the above link I am trying to implement a workaround for errata 220.
I have written a simple application that reads battery status after every 60 sec and transmitted it in mfg data. I have made changes in the nrf_pwr_mgmt_run function as below.
void nrf_pwr_mgmt_run(void) { PWR_MGMT_FPU_SLEEP_PREPARE(); PWR_MGMT_SLEEP_LOCK_ACQUIRE(); PWR_MGMT_CPU_USAGE_MONITOR_SECTION_ENTER(); PWR_MGMT_DEBUG_PIN_SET(); // Wait for an event. #ifdef SOFTDEVICE_PRESENT if (nrf_sdh_is_enabled()) { // commented by prashant test purpose 10082020 // ret_code_t ret_code = sd_app_evt_wait(); // ASSERT((ret_code == NRF_SUCCESS) || (ret_code == NRF_ERROR_SOFTDEVICE_NOT_ENABLED)); // UNUSED_VARIABLE(ret_code); // // added by prashant for test purpose SCB->SCR |= SCB_SCR_SEVONPEND_Msk; __disable_irq(); __WFE(); __nop();__nop();__nop();__nop(); __enable_irq(); //////////////////////////////////////////// } else #endif // SOFTDEVICE_PRESENT { // Wait for an event. __WFE(); // Clear the internal event register. __SEV(); __WFE(); } PWR_MGMT_DEBUG_PIN_CLEAR(); PWR_MGMT_CPU_USAGE_MONITOR_SECTION_EXIT(); PWR_MGMT_SLEEP_LOCK_RELEASE(); }
But After implementing the above code sleep current increases. kindly find below images for sleep current with and without a workaround implementation.
a) Without Workaround implementation.
b) With Workaround implementation.