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.

CC2650MODA: Transmit large data through BLE of CC2650MODA

Part Number: CC2650MODA
Other Parts Discussed in Thread: CC2650, BLE-STACK

Hi,

In my project, I am supposed to transmit 500 samples per second sampled data through BLE of CC2650MODA. The 250 samples per second sampled data is transferred with no error. But when I increase the sampling frequency of ADC to 500 I am getting sample losses while transmitting through BLE. I am using simple_peripheral example.

The maximum buffer to store sampled data is 8000 bytes. I think the buffer is being overwritten causing sample losses because the samples from ADC get into the buffer before the previously collected samples are transmitted. So I need to transmit the 500 sampled data fast. What all settings can be modified to achieve this?

The BLE Stack configuration parameters are as follow,

MAX_NUM_PDU=10

MAX_PDU_SIZE=251

MAX_NUM_BLE_CONNS=1

DEFAULT_DISCOVERABLE_MODE=GAP_ADTYPE_FLAGS_GENERAL

DEFAULT_DESIRED_MIN_CONN_INTERVAL=10

DEFAULT_DESIRED_MAX_CONN_INTERVAL=15

DEFAULT_DESIRED_SLAVE_LATENCY= 0

DEFAULT_DESIRED_CONN_TIMEOUT=100

DEFAULT_CONN_PAUSE_PERIPHERAL=2

  • Hi,

    It's the central device that mandates the connection parameters (and limits them). The peripheral device can request connection parameters per your shared defines, but there is not guarantee those are used. Are you able to sniff the communication and verify what data throughput you get?

    What size is one sample? 

  • Hi Joakim,

    I don't have a sniff to verify the communication.

    The size of one sample is 16 bytes.

    Regards,Jayant

  • Hi,

    That means that you need to have an application throughput of at least 16*8*250 = 32 kbps. To achieve this, you would have to stream data quite rapidly which is not necessarily related to connection interval. Do you know how many packets per connection event the peer device (i.e. smartphone or other) supports?

    Maximum payload per packet is 20 Bytes, per spec, so the question is how many packets the link can handle. From CC2650 perspective, it supports >>32kbps.

  • Hi Joakim,

    The peer device is an android cell phone with Bluetooth v4.2.

    The DLE is enabled to increase the bytes transmitted.

    So

    MAX_PDU_SIZE=251

    & maximum data bytes can be up to 244 bytes.

    Thanks,Jayant

  • Hi Jayant,

    As Joakim says, the throughput and speed of communication will depend on the BLE connection parameters (connection interval, max number of packets per connection event etc). If you cannot sniff, you should make your application print out connection intervals when the connection is formed (and if they are changed).

    You should also double check whether the bottle neck is between the ADC and the application, between the application and the BLE-Stack or between the two devices over the air. 

    Do you check the return status whenever you send a package from the application to the BLE-Stack (when you use GATT_Notification() etc)?

  • Hi Jayantkumar,

    Did you figure it out?

    I will close this thread due to inactivity.

  • Hi Marie,

    The bottleneck is between the two devices over the air.

    I'm using the BLE with the minimum connection interval of 7.5ms.

    I'm sending 178 bytes in one go.

    In a second, I'm sending around 8900 byes.

    I'm missing some bytes during transmission. And I don't know why transmission loss is ongoing.

    What may be the cause?

    Regards,

    Jayant

  • Hi Jayant,

    Can you make a sniffer log of this happening? 

  • Hi Marie,

    Thanks for the help.

    There was a bug in sample verifying logic between reading & transmission. It is fixed.

    Regards,

    Jayant