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

Can central multi-link connect to several peripherals with App_Uart?

Will it be possible to get data from several (20) peripherals which have App_UART to the single Multi-Link central?

  • Hi,

    When you say "App_UART", do you mean the ble_app_uart BLE peripheral example, or the app_uart library for hardware UART communication?

    If you are talking about BLE, there is a ble_app_uart_c multilink example available on GitHub. This is configured to support 4 concurrent connections, but it should be possible to increase this to the 20 links supported by the softdevice. You may need to increase the connection interval quite a lot when having that many connections, please see the scheduling chapter in the softdevice documentation.

    Best regards,
    Jørgen

  • Taking this forward...

    Is it possible to configure the following structure (as described in the picture below):

    1) Several Nordic acting as nrf_uart_app converting the status of the logic they are connected too, into set of UART messages

    2) A multilink Nordic device "listen" to all these devices (via BLE) and connected to a multiperipheral Nordic device via UART line (TxRx)

    3) Several smartphones with nrf Uart apk, connected to the multiperipheral device and get the information from all the Logic circuits (in real time)Multi Link to Multi Peripheral

  • There is nothing technically preventing you from doing what you have shown in the diagram. However, it depends on your requirements for "real-time". With two BLE links, one HW UART link, and multiple connections being services on both ends, the latency between the circuits and the phones will not be negligible.

  • Hi Jorgen, nice to see your post here. I am doing the same kind of project based on multiple peripherals and central. I have 20 peripherals and transmit data to the central at 0.28s individually. Every peripheral works based on its own timers. But when the peripherals increase from 10 to 15 or 16, many peripherals will be lost connection with central and didn't advertise anymore. As you mentioned before, increasing the connection interval will solve the problem, which parameters are related to this question? The code below in sdk_config.h? Thanks.

    // <o> NRF_BLE_SCAN_SCAN_WINDOW - Scanning window. Determines the scanning window in units of 0.625 millisecond. 
    #ifndef NRF_BLE_SCAN_SCAN_WINDOW
    #define NRF_BLE_SCAN_SCAN_WINDOW 80      // 200      
    #endif
    
    // <o> NRF_BLE_SCAN_MIN_CONNECTION_INTERVAL - Determines minimum connection interval in milliseconds. 
    #ifndef NRF_BLE_SCAN_MIN_CONNECTION_INTERVAL
    #define NRF_BLE_SCAN_MIN_CONNECTION_INTERVAL 7.5       //7.5
    #endif
    
    // <o> NRF_BLE_SCAN_MAX_CONNECTION_INTERVAL - Determines maximum connection interval in milliseconds. 
    #ifndef NRF_BLE_SCAN_MAX_CONNECTION_INTERVAL
    #define NRF_BLE_SCAN_MAX_CONNECTION_INTERVAL 30    //180      
    #endif
    
    // <o> NRF_BLE_SCAN_SLAVE_LATENCY - Determines the slave latency in counts of connection events. 
    #ifndef NRF_BLE_SCAN_SLAVE_LATENCY
    #define NRF_BLE_SCAN_SLAVE_LATENCY 0
    #endif
    
    // <o> NRF_BLE_SCAN_SUPERVISION_TIMEOUT - Determines the supervision time-out in units of 10 millisecond. 
    #ifndef NRF_BLE_SCAN_SUPERVISION_TIMEOUT
    #define NRF_BLE_SCAN_SUPERVISION_TIMEOUT 4000
    #endif

Related