I am working on a device that contains an nRF52840. It is a BLE central with up to 20 concurrent peripheral devices. For user experience, it's important that it be able to reliably and quickly connect to all 20 peripherals. The peripherals are also 840-based. The connections usually come up quickly and work well. However, I sometimes get disconnect events with HCI error codes 0x3E (Connection failed to be established) or 0x22 (LMP transaction collision/LL procedure collision), and have to re-establish the connection. Is there anything I can do in my software to minimize the frequency of these types of connection failures?
Also, why does an HCI error 0x22 cause the connection to fail? As I read the BLE 5.0 spec, this should just cause the slave's procedure to be ignored and the master's procedure to be executed. The spec does not say that the connection should be terminated. Thank you!