This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Improving BLE throughput using compression technique

Other Parts Discussed in Thread: ADS1198, CC2640

In our design using ADS1198 generates 36Kbps of data every second.
But the throughput of the BLE is not supporting so much data transmission and SPI read from ADS1198. So we 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

  • It depends on your data. If it's slowly changing analog values, you could just transmit the deltas. In general, there is no compression algorithm that can reduce arbitrary (random) data lossless. And compression might introduce addition latency.

    For a quick check, you could write your sample data to a file a try to zip that file and see by how much that files gets reduced. zlib is an open source compression library that I use for such purposes.

    kind regards,
    Torsten
  • BLE radio speed is 1Mbps. In theory, the application throughput is 256kbps for BLE4.1 and 650 kbps for BLE4.2. Now, most BLE venders can achieve application data throughput larger than 100kbps. For CC2640, it can be up to 300kbps by enlarge MAX_NUM_PDU and ATT_MTU.

    The issue is "the receiver must also support high throughput". For example, iPhone usually don't accept high data rate.

    Standard lossless compression ratio is very bad and requires a lot of computing power. ADS1198 is 16bits converter. If you can analyse the data pattern then you can design a special & simple compressing algorithm for your data. Here are some ideas for you.

    (1) If your application only requires 12bits resolution then you can use 3 bytes to express two sampled data.
    (2) If the signal is varying slowly then you can transmit "difference" instead of the original values.
    (3) Run-length encoding could be useful for you. You can study it.