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

Is external crystal neccessary at all on 52832

As i am migrating to 52 and tuning the ble app, i realized by reading many posts here that:

  1. external HF xtal is not recommended
  2. external LF xtal can be replaced by using internal xtal with temperature compensation.

So does that mean external crystal (either HF or LF ) actually not needed at all on 52?

Parents
  • Hi,

    1. External HF crystal is mandatory if you want to use the radio peripheral. If you are using BLE, you have to use an external 32 MHz crystal with a frequency tolerance of max 40 ppm. As mentioned in this post:

    The external HF clock is critical for data timing and more critical to keep the bluetooth radio on the correct frequency. All the 2.4GHz channels are derived from the 32MHz crystal. So the ppm accuracy of the xtal will be the same ppm accuracy of your carrier in the 2.4GHz band.

    2 .

    External LF crystal(32 kHz)is not mandatory, but recommend. See this and this post.

    Since you are migrating to nRF52832, I recommend to take a look at the General PCB design guidelines for nRF52 series tutorial

  • Do you have a oscilloscope that can measure 32 MHz ?

    You can try to call sd_clock_hfclk_request(), and then call sd_clock_hfclk_is_running. sd_clock_hfclk_is_running() returns 1 if the external crystal oscillator is running.

    You could e.g. try something like this:

    sd_clock_hfclk_request();
    uint32_t flag = 0;
    // Enter main loop.
    for (;;)
    {
        if (NRF_LOG_PROCESS() == false)
        {
            power_manage();
        }
        sd_clock_hfclk_is_running(&flag);
        NRF_LOG_INFO("Flag: %d", flag);
    }
    

    If you dont't get "Flag: 1", then you have a problem with the HF crystal. And you should then double check that the crystal on your board is mounted correctly, i.e. not shifted by 90 degrees for example.

    Yes, the ble_advertising_start() will return 0, and bsp will start blinking even if the HF crystal is not mounted. The SoftDevice will wait for the HF crystal to startup before you see any BLE activity.

    Attach a debugger, and use e.g. J-Link RTT viewer to see the nrf_log's

    Let me know how it goes!

Reply
  • Do you have a oscilloscope that can measure 32 MHz ?

    You can try to call sd_clock_hfclk_request(), and then call sd_clock_hfclk_is_running. sd_clock_hfclk_is_running() returns 1 if the external crystal oscillator is running.

    You could e.g. try something like this:

    sd_clock_hfclk_request();
    uint32_t flag = 0;
    // Enter main loop.
    for (;;)
    {
        if (NRF_LOG_PROCESS() == false)
        {
            power_manage();
        }
        sd_clock_hfclk_is_running(&flag);
        NRF_LOG_INFO("Flag: %d", flag);
    }
    

    If you dont't get "Flag: 1", then you have a problem with the HF crystal. And you should then double check that the crystal on your board is mounted correctly, i.e. not shifted by 90 degrees for example.

    Yes, the ble_advertising_start() will return 0, and bsp will start blinking even if the HF crystal is not mounted. The SoftDevice will wait for the HF crystal to startup before you see any BLE activity.

    Attach a debugger, and use e.g. J-Link RTT viewer to see the nrf_log's

    Let me know how it goes!

Children
No Data
Related