This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

we got errror, SOFTDEVICE: ASSERTION FAILED in SDK_15.3.0 on our custom hardware based on nRF52832.

Our custom board uses internal RC clock source and I tried to build original sample app, "ble_app_pwr_profiling" in SDK 15.3.0 using attached sdk_config.h modified only with LF Clock setted to RC source. then after we go "for loop" in the main() and enter the idle_state_handle(), we got the error, "SOFTDEVICE: ASSERTION FAILED" in the app_error_fault_handler(). I attached the debug capture file below with our sdk_config.h and our schematic. please how can I why this problem occurred?

our sdk_config.h:

sdk_config.h

our schematic is as followings:

Parents
  • Hi.

    Have you made any modifications to the code?

    Can you check which value you are using for the p_clock_lf_cfg argument of the sd_softdevice_enable?

    Best regards,

    Andreas

  • I have to use internal rc osillator so i modified belows definition macro in sdk_config.h.

    //==========================================================

    // <h> Clock - SoftDevice clock configuration

    //==========================================================
    // <o> NRF_SDH_CLOCK_LF_SRC - SoftDevice clock source.

    // <0=> NRF_CLOCK_LF_SRC_RC
    // <1=> NRF_CLOCK_LF_SRC_XTAL
    // <2=> NRF_CLOCK_LF_SRC_SYNTH

    #ifndef NRF_SDH_CLOCK_LF_SRC
    #define NRF_SDH_CLOCK_LF_SRC 0 //hong
    #endif

    // <o> NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval.
    #ifndef NRF_SDH_CLOCK_LF_RC_CTIV
    #define NRF_SDH_CLOCK_LF_RC_CTIV 16 //hong
    #endif

    // <o> NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature.
    // <i> How often (in number of calibration intervals) the RC oscillator shall be calibrated
    // <i> if the temperature has not changed.

    #ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV
    #define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 2 //hong
    #endif

    // <o> NRF_SDH_CLOCK_LF_ACCURACY - External clock accuracy used in the LL to compute timing.

    // <0=> NRF_CLOCK_LF_ACCURACY_250_PPM
    // <1=> NRF_CLOCK_LF_ACCURACY_500_PPM
    // <2=> NRF_CLOCK_LF_ACCURACY_150_PPM
    // <3=> NRF_CLOCK_LF_ACCURACY_100_PPM
    // <4=> NRF_CLOCK_LF_ACCURACY_75_PPM
    // <5=> NRF_CLOCK_LF_ACCURACY_50_PPM
    // <6=> NRF_CLOCK_LF_ACCURACY_30_PPM
    // <7=> NRF_CLOCK_LF_ACCURACY_20_PPM
    // <8=> NRF_CLOCK_LF_ACCURACY_10_PPM
    // <9=> NRF_CLOCK_LF_ACCURACY_5_PPM
    // <10=> NRF_CLOCK_LF_ACCURACY_2_PPM
    // <11=> NRF_CLOCK_LF_ACCURACY_1_PPM

    #ifndef NRF_SDH_CLOCK_LF_ACCURACY
    #define NRF_SDH_CLOCK_LF_ACCURACY 1 //hong
    #endif

    As I said before, I modified from the original to my definitions in sdk_config.h.

    and when I didn't use SDH as I used the project, "peripheral\blinky", it worked well without fail-error.

  • Hi.

    Looks like there was something missing in my previous reply.

    Now that you have set NRF_CLOCK_LF_ACCURACY_500_PPM, do you still get the assert?

    Jaehong Park said:
    and when I didn't use SDH as I used the project, "peripheral\blinky", it worked well without fail-error.

     You will not get a SoftDevice assertion when using projects that do not use the SoftDevice.

    Best regards,

    Andreas

  • Enen though I have have set NRF_CLOCK_LF_ACCURACY_500_PPM, I still got the assert right after program counter on the ses debugger started at first and configured softdevice_enable() with above RC settings in the sdk_config.h and entered the for loop in the main(). The point is what I said is that I got the assert above right after we entered the for loop in the main function after it looks like I configured soft_device well using above settings.

  • In addition, please check the code in line in the softdevice which points the value of pc on debug  captured shot above. 

Reply Children
Related