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

application works on nRF52 DK, but connection issues on Taiyo Tuden module

I have a example application (gatt central) that works fine on the nRF52DK dev board.  I'm able to change the advertisement name, connect to it with my phone, and see the characteristic update based GPIO analog value.

When I download the same application on a Taiyo Yuden EYSHSNZWZ module (nRF52832, 512kB flash, 64kB RAM), I'm able to change the advertisement name and see if advertising a different name, but I'm unable to connect to it with my phone.

Looking at the nRF module, I think they're the same nRF52832.  I'm using Segger Embedded Studio with soft device S132.  I'm confused about why I'm able to change the advertisement name and re-download to the Taiyo Yuden, but it behaves differently than the nRF52DK board.

  • Hi

    A lot of third party modules do not have the optional external 32.768kHz LF crystal mounted like our development kits do. Our SDK examples use the LF crystal as the LF clock source by default, so if you're trying to use the radio without this crystal that will cause problems like this for instance.

    In the nRF5 SDK you can edit the following defines in sdk_config.h to the values below to use the internal RC oscillator instead.

    //==========================================================
    // <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

    In NCS, this config in prj.conf should be sufficient: CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y

    Best regards,

    Simon

  • That fixed the problem , thank you for the detailed answer.

Related