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

nRF52840 Bluetooth not work

Hi i just bough module nRF52840 from EBYTE.

i test with peripheral work as normal but example Bluetooth Uart not working .  i uploaded success but no device found from my phone.

does module need crystal 32.768khz or not ? because this module don't have crystal 32.768khz

Parents Reply Children
  • It works allright. You can use any barrel shape 32khz crystal no need for caps even. See github.com/.../Crystal

  • Thanks joric. My module looks exactly the same as in the pictures above. However, in the specifications it specifically states is has a 32.768 RTC with a picture of the crystal oscillator. In the manuals schematics Dec 4 and Dec 6 seems to be connected externally. I haven't pulled the aluminium casing off to check if the crystal really is there though. Is the specs simply wrong? ( http://www.ebyte.com/en/product-view-news.aspx?id=445 )

    I got it working by using RC ocillator with config below. However I think crystal will help with accuracy and stability, and power consumption to some extent? And is there a certain frequency I should go for in a external crystal?

    I've only started these kind of modules/chips and BLE the last couple of weeks and it's a steep learning curve, but all the information on DevZone is really helpful. 

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

  • There's no 32k inside. There's 32m inside. There's no space for 32k. It is optional extra that you solder externally, it does almost nothing it's really negligible unless you have firmware that doesn't run without it. If you don't have it you'd have to replace all mentions of NRF_CLOCK_LF_SRC_XTAL to NRF_CLOCK_LF_SRC_RC. That's it, I'm done here. I gave you the link above, read it.

Related