This blog is to configure the nRF52 as the multiple BLE peripheral and then send the data to its corresponding master. This is the proof of concept demo.
For example, as the below diagram, the nRF52 is configured as the dual ble peripheral. It keeps to update the data to central.
- SDK 16.0 / S132v7.0.1
- 3 x nRF52832 DK board
- IDE: Segger Embedded Studio
Configure the BLE role to multiple peripheral
// <o> NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT #define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 4 #endif // <o> NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT #define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 #endif // <o> NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. // <i> Maximum number of total concurrent connections using the default configuration. #ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT #define NRF_SDH_BLE_TOTAL_LINK_COUNT 4 #endif
Use the NUS (Nordic UART Services) for multiple connection
BLE_NUS_DEF(m_nus, NRF_SDH_BLE_TOTAL_LINK_COUNT); /**< BLE NUS service instance. */
Declare multiple buttons to send the data at each peripheral link.
On each button, it sends the data and measure the throughput.
It would keep to push the data and use the RTC timer to measure how many data sent.
Dual peripheral roles with ble_app_uart example uplinks the 64KB bytes data to two individual ble central role.
By using the connection interval = 15ms, each connection is limited to 7.5ms for gap event.
The maximum throughput from my preliminary test is 108kbps.