Improving BLE throughput using compression technique

7 posts / 0 new
Last post
Bharath
Offline
Last seen:1 year 4 months ago
加入:2016-04-14 07:03
Improving BLE throughput using compression technique

In our design we have a sensor which generates 36Kbps of data every second.
But the throughput of the BLE is not supporting so much data transmission and interrupt handling from sensor. So I want to use compression logic to transmit the data. The method should be fast and lossless.
What are the possible methods to improve my BLE throughput using a simple compression technique?

Thank you

Device:
MT_dialog
Offline
Last seen:1 month 2 weeks ago
Staff
加入:2015-06-08 11:34
Hi Bharath,

Hi Bharath,

The DSPS application can achive the kind of speed you would like without using compression of any kind, please check the performance results in the DSPS application note.

Thanks MT_dialog

Bharath
Offline
Last seen:1 year 4 months ago
加入:2016-04-14 07:03
Right now we are using data

Right now we are using data_stream profile.
Does DSPS give better results?
What all modification I should do in order to read data from SPI device and send it using DSPS?

Thank you

MT_dialog
Offline
Last seen:1 month 2 weeks ago
Staff
加入:2015-06-08 11:34
Hi Bharath,

Hi Bharath,

As mentioned in my previous post you can check the performance results in the UM-B-038 Serial Port Service, on page 32, there you can find all the measurements performed for different kind of operating systems (android, iOS) and the 580 operating as a central.

Regarding the SPI modification i suppose that you can read data from the SPI device and place the data received in the ring buffers of the DSPS application, in case you want to just print data on the uart on the other side of the connection. In case that you are not interested in using the UART interface at all, you can check how the DSPS is able to achieve those kind of data rates over bluetooth. In general you can improve your throughput by using lower connection intervals, by increasing your MTU size, you can remove the overhead that the L2CAP enters to your packets. Also by using proper characteristics also improves your data rate, for example use notifications in order to send data from your slave device (are more efficient than indications) and use write with no response commands and characteristics that support this property in order to send data from your central.

Thanks MT_dialog

Bharath
Offline
Last seen:1 year 4 months ago
加入:2016-04-14 07:03
I tried changing MTU size

I tried changing MTU size from 23 in the throughput eval example, but it did not work. When MTU size is changed only 8 to 10 bytes where sent every time.
Could you please tell me where can I add the data from SPI to the Ring buffers in the DSPS example?
Also when I am running my DSPS example, in keil the program stops and not able to debug my code. What might be the reason for this?

Thank you

Bharath
Offline
Last seen:1 year 4 months ago
加入:2016-04-14 07:03
Can this issue be solved by

Can this issue be solved by threads?
How can I add a thread in the DA14580?

MT_dialog
Offline
Last seen:1 month 2 weeks ago
Staff
加入:2015-06-08 11:34
Hi Bharath,

Hi Bharath,

Regarding the DSPS and the data from the SPI, you can have a look at the application note, the function that is used in order to place data in the ring buffers is user_periph_push() from the uart to the periph_to_ble_buffer. The function also checks the state of the buffer and sends a flow off as well. If dont want this kind of control to your application you can use the user_send_ble_data() in order to directly send the data on the other side.

Regarding the stopping issue when in sleep mode you wont be able to debug, you will have to either disable the sleep mode or if sleep mode enabled exit the debugging mode.

Regarding the thread, the 580 doens't have an actual operating system in order to support threads, the basic OS that handles the tasks just receives messages and handles them, nothing fancy as an actual operating system.

Thanks MT_dialog