Existing FW developed on PCA10040 EVB, moved to EVM-BC805 which is the chip for my final board design. I applied the patch that I found to SDK 17. However this anomaly function is called based on the existing #defined conditions, even after the patch.
On the 805 it gets stuck in the while loop. I removed the call to this anomaly function and it seems to run fine, either with xtal or RC. I am just concerned that this might not be the correct approach I don't want whatever this workaround was originally for, to still occur, even though has worked so far.
#if NRFX_CHECK(USE_WORKAROUND_FOR_ANOMALY_132) /** * @brief Function for applying delay of 138us before starting LFCLK. */ static void nrfx_clock_anomaly_132(void) { uint32_t cyccnt_inital; uint32_t core_debug; uint32_t dwt_ctrl; // Preserve DEMCR register to do not influence into its configuration. Enable the trace and // debug blocks. It is required to read and write data to DWT block. core_debug = CoreDebug->DEMCR; CoreDebug->DEMCR = core_debug | CoreDebug_DEMCR_TRCENA_Msk; // Preserve CTRL register in DWT block to do not influence into its configuration. Make sure // that cycle counter is enabled. dwt_ctrl = DWT->CTRL; DWT->CTRL = dwt_ctrl | DWT_CTRL_CYCCNTENA_Msk; // Store start value of cycle counter. cyccnt_inital = DWT->CYCCNT; // Delay required time. while ((DWT->CYCCNT - cyccnt_inital) < ANOMALY_132_DELAY_CYCLES) {} // Restore preserved registers. DWT->CTRL = dwt_ctrl; CoreDebug->DEMCR = core_debug; } #endif // NRFX_CHECK(USE_WORKAROUND_FOR_ANOMALY_132)