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

Use of Non-Eval Board Custom Hardware

All of our initial BLE project development has been done using a the Nordic nRF5_SDK_15.3.0_59ac345 SDK and 10056 eval board.  Now we have a production board that is based on the eval board but has the following differences:  (1) no reset PB, (2) no SPI flash, and (3) no ext 32K osc

Even after modifying what I believe was a #define for the clock source, my debugger jumps into a SVCALL macro and first gets caught in an assembly code loop looking for a value in SRAM address 0x40000104 to be 1.  Simply put, on the eval board this all works, but on the custom board it does not.  Not sure if this is something related to a need for a new bootloader maybe?

Any insight would be appreciated.

  • SRAM address 0x40000104

    That is peripherial address space and not simply SRAM. Looking into the PS, this is the EVENTS_LFCLKSTARTED address.

    In other words, your clock config is still wrong. Search this forum, questions about clock config pop up all the time here.

  • Hello,

    As Jörg mentions, the SRAM address points to EVENTS_LFCLKSTARTED, which suggests that you clock configuration is incorrect. I suspect that it is the LFCLK source that is the error.
    How have you configured your LFCLK source? Is it anything like the following?

    // <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
    #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
    #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
    #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
    #endif



    Best regards,
    Karl

  • Thanks.  Fixing the clock and related items fixed it.

Related