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

The node resets on connection negotiation timer timeout

We are using the following.

Module: BM833 (nRF52833) from Fanstel

Softdevice: S140 7.0.0

SDK: nRF5SDK17009d13099

Sample code: nRF5_SDK_17009\examples\ble_peripheral\ble_app_uart

The parameters we use are as below.

#define APP_ADV_INTERVAL 64

#define APP_ADV_DURATION 18000 

#define MIN_CONN_INTERVAL MSEC_TO_UNITS(20, UNIT_1_25_MS) 
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(60, UNIT_1_25_MS) 
#define SLAVE_LATENCY 0
#define CONN_SUP_TIMEOUT MSEC_TO_UNITS(4000, UNIT_10_MS) 
#define FIRST_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(5000) 
#define NEXT_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(30000) 
#define MAX_CONN_PARAMS_UPDATE_COUNT 3

In our application, the peripheral node connects to the central device, transmit the data, and issues the disconnect event. It finished all this within 5 to 6 seconds.

We observed that sometimes rtc_irq()->on_compare_evt()->timer_expire() is executed after the disconnection request is issued and the it throws the invalid state error (0x08) and causes the software reset.

How can we fix it?

Why the timer is not stopped from the library if connection parameters are successfully established? The timer is configured in one-shot mode and it is assumed that it will expire before the disconnection request is issued. Where can we stop that timer? 

Is it ok to increase the FIRST_CONN_PARAMS_UPDATE_DELAY  from 5 seconds to 8 seconds?

Parents Reply Children
No Data
Related