Hi:
We are develop an Central Device can Connect 8 BLE Device in same time. and want max throughout. it use queue and freeRTOS. the Central TX is simple.
use sd_ble_gattc_write() with BLE_GATT_OP_WRITE_CMD to write. wait semaphore event rise by BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event.
but between the SD_EVT_IRQ interrupt rise(BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE ) and sd_ble_gattc_write, it take about 7.5ms. not our expect 2.5ms(1Mbps) or 1.4ms(2Mbps). When SD_EVT_IRQ interrupt rise by SoftDevice? why it same value as NRF_BLE_SCAN_MIN_CONNECTION_INTERVAL ?
Is NRF_SDH_BLE_GAP_EVENT_LENGTH use to reduce SD_EVT_IRQ frequency? Do the Nordic Semiconductor have guidebook for these config parameters? or have excel document can calculate these parameters?
how the SoftDevice handle Multi-linked peripheral connect timing?
from "Connection timing as a Central" charter of S140_SDS_v2.1, Do SoftDevice use one Big time Slot to scan each connected peripheral? each peripheral get equalization chance?
| peripheral 1 connect timing(7.5ms) | peripheral 2 connect timing(7.5ms) | .... | peripheral 8connect timing(7.5ms)| --> Next loop
|_____________________________|_____________________________|_______________________________|
or just each peripheral has random shift start connect timing?
| peripheral 1 connect timing(7.5ms) |
| peripheral 2 connect timing(7.5ms) |
.....
| peripheral 8connect timing(7.5ms)|
Here the Central Config:
#define NRF_SDH_BLE_GAP_DATA_LENGTH 251
#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 0
#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8
#define NRF_SDH_BLE_TOTAL_LINK_COUNT 8
#define NRF_SDH_BLE_GAP_EVENT_LENGTH 6
#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247
#define NRF_BLE_SCAN_MIN_CONNECTION_INTERVAL 7.5
the "Connection Event Length Extension" is enabled. and connect peripheral use min_conn_interval=max_conn_interval=7.5ms. peripheral use BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE/BLE_GATT_CHAR_PROPERTIES_NOTIFY.