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

About NRF_RADIO->MODE of "ble_app_buttonless_dfu" example

Hello.

I have my application created by referring to "ble_app_buttonless_dfu" example.

When I applied for certification with this application, it was determined that this radio was not BLE. In my research, I found that the value of NRF_RADIO-> MODE was 0 ( = "1Mbit/s Nordic proprietary radio mode").

I have the following questions:

  1. Is "ble_app_buttonless_dfu" example of working in "1Mbit/s Nordic proprietary radio mode"?
  2. What is the difference between "Nordic proprietary radio mode" and "Bluetooth Low Energy"? What is the difference in wireless specifications, and is there any difference that affects users in actual use?
  3. How should I change the source code from "ble_app_buttonless_dfu" example to operate with "1Mbit/s Bluetooth Low Energy"? Also, which example works with "1Mbit/s Bluetooth Low Energy"?
  4. How can I be sure that the module is running in BLE? I want to check without using a debugger.

Thank you.

Parents Reply Children
  • I understood as follows. Is this correct?

    1) Do not change NRF_RADIO->MODE. This is managed by BLE softdevice.

    2) Execute ble_stack_init() to enter BLE mode (1Mbit/s? 2Mbit/s?).

    /**@brief Function for initializing the BLE stack.
     *
     * @details Initializes the SoftDevice and the BLE event interrupt.
     */
    static void ble_stack_init(void)
    {
        ret_code_t err_code;
    
        err_code = nrf_sdh_enable_request();
        APP_ERROR_CHECK(err_code);
    
        // Configure the BLE stack using the default settings.
        // Fetch the start address of the application RAM.
        uint32_t ram_start = 0;
        err_code = nrf_sdh_ble_default_cfg_set(APP_BLE_CONN_CFG_TAG, &ram_start);
        APP_ERROR_CHECK(err_code);
    
        // Enable BLE stack.
        err_code = nrf_sdh_ble_enable(&ram_start);
        APP_ERROR_CHECK(err_code);
    
        // Register a handler for BLE events.
        NRF_SDH_BLE_OBSERVER(m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_handler, NULL);
    }

    How do I know that my application is running in BLE mode (with or without a debugger)?

  • The softdevice will use 1Mbps by default, it's only if you intentionally for instance configure init.config.ble_adv_primary_phy to something else when initialize advertising that you can change it. 

    I suggest to look at the various examples, and if they advertisement is received by mobile phone you can indirectly verify that it is indeed doing BLE. If you want you can also buy an expensive Anritsu tester or Ellisys sniffer to verify this.

    Kenneth

Related