LLPM connection interval and the frequency of data transmission

Hello,

I'm using the llpm sample code on nrf52840.

I'm confused about the connection interval.

From this post, I thought that the connection interval is equivalent to the shortest time interval for transmitting data, that is, after the first data packet is transmitted, the second data packet can be transmitted after waiting for the connection interval time.

Also, when I use non-llpm ble code, I can also change the minimum interval for transmitting data by modifying CONFIG_BT_PERIPHERAL_PREF_MIN_INT, and the description of CONFIG_BT_PERIPHERAL_PREF_MIN_INT is also related to the connection interval.

But I modified the following part in the llpm code to detect the time interval for receiving data, and found that when the connection interval is 1ms, the shortest interval for receiving data is still 7.5ms.

Now I am confused about what the connection interval means? Is it related to the interval of transmitting data?

Parents
  • Hi

    Yes, sorry. In LLPM the connection interval can be as low as 1 ms. Do you have two devices with the LLPM sample flashed on your end, or is it connected to something else? If not, I'm guessing the device you're connecting to does not support LLPM which is why the connection interval jumps up to 7.5ms.

    Please share some details on what exactly you're testing on your end.

    Best regards,

    Simon

Reply
  • Hi

    Yes, sorry. In LLPM the connection interval can be as low as 1 ms. Do you have two devices with the LLPM sample flashed on your end, or is it connected to something else? If not, I'm guessing the device you're connecting to does not support LLPM which is why the connection interval jumps up to 7.5ms.

    Please share some details on what exactly you're testing on your end.

    Best regards,

    Simon

Children
  • Do you have two devices with the LLPM sample flashed on your end, or is it connected to something else?

    I burned the llpm code on both nrf52840 DKs.

    In order to obtain the time point when the receiving end received the data, I made the following modifications:

    (1)Add receive data callback. When data is received, latency_request will be entered.

    (2)Read the current time in latency_requst and print it out.

    (3)When transmitting data, remove the default k_sleep so that it can transmit data uninterrupted.

    After making the above modifications, I burned the modified code onto two nrf52840 DKs.

    After burning, one nrf52840 DK will be used as central and the other nrf52840 DK will be used as peripheral.

    After Central and Peripheral are connected, send a UART command to let central start sending data to peripheral.

    central log:

    peripheral log:

    Judging from the peripheral log, when the connection interval is updated to 1ms, the time interval between receiving two sets of data is 5ms to 8ms, and when the connection interval is updated to 7.5ms, the time interval between receiving two sets of data will be 15ms.

    From this post, I thought that the connection interval is equivalent to the shortest time interval for transmitting data, that is, after the first data packet is transmitted, the second data packet can be transmitted after waiting for the connection interval time.

    According to the description here, when the connection interval is 1ms, after sending one set of data, the next set of data can be sent at an interval of 1ms. Then the time to receive the two sets of data should also be 1ms,as shown in the picture. But the actual measurement is 5 to 8ms, is there something wrong with my understanding?