BLE Dual-Chip Configuration

Hello Nordic,

Currently, we are looking the stack architecture of the BLE provided in the attached link https://docs.nordicsemi.com/bundle/ncs-latest/page/zephyr/connectivity/bluetooth/bluetooth-arch.html

We would like to use the dual-chip configuration as described in the document.

Can you please provide the example projects for the "Controller-only" & "Host-only" builds ?  are they available in the nRF Connect SDK?

I would like to use nRF52833 as Controller only and nRF52840 as Host only?

Thanks & Regards

PT

  • Hello,

    We have a sample that is intended for the nRF91, that uses an nRF52 as a BLE controller. 

    This sample is called LTE Sensor Gateway, or lte_ble_gateway in the SDK (ncs\nrf\samples\cellular\lte_ble_gateway). It is intended to run on an nRF91DK, or they Thingy91, but it shows how to set up a host application, and how to point at the correct UART pins for the controller.

    As it is stated in the documentation, the board controller (the nRF52 on the nRF91 DK) needs to be programmed with the Bluetooth HCI low power UART sample. Note that the low power uart HCI sample only works when you also own the application on the host. If you intend to use it with a 3rd party host via UART, you must use the non-low power UART variant of this sample. But in your case, where you will write the application for the host as well, I suggest you use the low power variant, as it uses less power than normal UART (the difference is the way that they tell each other when they wil transmit data, so they don't need to keep the HFCLK running at all times).

    To tell the application on the host that it has access to BLE over UART, you need to have this in an .overlay file, like it is in the nrf9160dk_nrf9160_ns.overlay file in the lte_ble_gateway sample:

    / {
    	chosen {
    		zephyr,bt-uart=&lpuart;
    	};
    };

    and then define lpuart to use the gpios that you want to use. 

    It may be that you also need to set CONFIG_BT_CTLR=n in your host's prj.conf file, if it has BLE out of the box, but I never tested this with an nRF52 device as the host.

    Best regards,

    Edvin

  • Hello,

    Thanks for the information.

    A few questions regarding the ble_gateway project as follows:

    1. Does the main and board controller communicate via UART protocol? if yes, what is the maximum speed we can achieve for data exchange?

    2. In this case, the GAP & GATT profiles are stored in the main controllers flash, rather than the board controller - am i right?

    3. Does this work only between nordic chips or can i change the main controller to some other vendor and get the exact behaviour? Is there any special mechanism to make this work?

    4. How does the firmware update work in case if i want to do software update for board controller from mobile?

    Please let me know

    Thanks & Regards

    PT

  • Teja_K said:
    Does the main and board controller communicate via UART protocol? if yes, what is the maximum speed we can achieve for data exchange

    Yes, but it is possible to use other protocols as well. You can see that there are different hci samples in ncs\zephyr\samples\bluetooth. But for UART, the maximum speed is to use baudrate 1mbps.

    2: Right.

    3: It is standard HCI (Host controller interface), so if you'd like, you can set it to USB, and plug it into a computer for a normal bluetooth dongle (that will only support Bluetooth LE, so it is not accepted by windows, but it works on linux). But my takeaway is that it doesn't only work on nordic - nordic. Any device that can be a bluetooth host can use the controller (hci) devices.

    4: You can use the same serial interface, but this is not my area of expertise. You can implement a serial bootloader (mcuboot), and use the same e.g. uart for this. You need some way to tell the device to enter DFU mode, which is typically done with an extra GPIO telling it to enter DFU mode. Please see this ticket:
    HCI and MCUMGR on the same UART

    Best regards,

    Edvin

Related