Connection interval for nrf52840

Hi ,

 For Battery operated devices, we are using NRF52840, and developing the firmware using Segger Embedded studio +  NRF SDK. s140nrf52720, nRF5SDK1702d674dde

For our application we are using the "Peripheral -  Nordic UART Service NUS" example to send the pressure data over the BLE.

To take it further we are going to add the

  • VT - Variable Transmission Time for sensor data ( adjustable interval from 1 sec to 1 minute)
  • DFU

With above context, while developing the firmware we are facing few issues,

For VT,  after reading the several Noridc forum, we come to know that it’s a Central who decide the connection parameters ( slave latency, connection interval MAX, and MIN, supervision timeout).

 Issue#1 : With below setting, we are able to connect with central after every 10 sec of interval , how can we increase it ? To have interval between connection equal to 60 sec. ?

 

In NUS example when we try to change the connection parameters then code didn’t work

Our plan is to use the connection interval always 1 sec and change the Slave latency to change interval between connection.

However , max connection supervision timeout we can set is 32Sec.

   

Issue#2:

 How can, peripheral firmware be able to accept the change in connection parameter ? is this sufficient to have in the firmware?

   Also, is there any simple way we can change the connection parameter from the Mobile APP and test it?

  

  • Hi

    If you want a very large connection interval I think it would be better for current consumption reasons to disconnect and put the devices into sleep mode for a set amount of time and reconnect instead. Check out the current consumption guide available here for how to put the device into low power mode.

    You can check out this guide on how to manage your Bluetooth connections here: https://punchthrough.com/manage-ble-connection/ 

    Regarding your Issue #2: The peripheral example projects also have these MIN_CONN_INTERVAL and MAX_CONN_INTERVAL parameters that can be set higher to let the peripheral accept higher connection parameters than 75ms.

    When connected in the nRF Connect for Android mobile app you can change the connection parameters somewhat, but not fully. After connecting, you can press the three dots in the connection window and request "connection priority" either, HIGH, BALANCED or LOW ranging from 15 to 125ms connection intervals. Higher than that is not supported in the nRF Connect for Mobile app at least.

    Best regards,

    Simon

  • Hi Simonr,

    Thank you for the reply...!

    We have used the same Post as you shared for the current consumption minimization. We will go through the post shared by you  -  PunchThrough.

    For second part of the issue #1, we know that MIN_CONN_INTERVAL and MAX these parameters control the connection interval. But problem is we are not able to adjust the connection parameter interval greater than 10sec,( using MAX CONN INTERVAL and Slave latency), Ideally we should be able to achieve it to 32Sec. However, when we change the these parameters to others than this then there is error in the code while initializing the connection parameter.

  • Hi

    Please try finding out what function it is that returns this error code. Error code 7 generally points to an operation timing out, so something in your application seems to be timing out in between connections. Likely with a 10 second timeout then.

    Best regards,

    Simon

  • Hi Simonr,

    The the error is while initializing the GAP parameters. 

    It is working fine till 12 sec of connection interval. ( MAX_CONN_INTERVAL:2000ms,SLAVE_LATENCY 6. CONN_SUP_TIMEOUT: 32000ms).

    But failing for below combination

  • HI

    Sorry, but an error 7 in this function points to an invalid parameters being set in your gap_params_init(). I think this is because of your supervision timeout + the latency set together increasing the supervision timeout above the allowed 32 seconds set by the Bluetooth specification. Check out the DevZone thread here where my colleague Edvin explains a similar issue another user was running into.

    It could also be the connection intervals being set too high.

    Best regards,

    Simon

Related