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.

Need some inputs in finding latency and ble throughput and whether I can use BLE or not...

Other Parts Discussed in Thread: CC2640, CC2650, CC2540

There is a project wherein motion of a stick is to be analyzed. The raw data obtained from the sensor is to be sent to a smartphone using BLE.

Sensor is MPU9250 which is 9 axis DoF Inertial Measurement Unit. It has 3 axis accelerometer, 3 axis gyro and 3 axis compass.

Sensor will be interfaced over I2C.
Data is sampled at a rate of 2000Hz, i.e. 2000 samples per second to the host controller. The host controller is BLE SOC such as nRF52832 or TI's CC2640.

Per second data size to sampled = 200Kbits

Below are my set of questions:


1. What will be the time for getting data over I2C and sending it over BLE to Smartphone? (I2C configured at 400KHz)
2. Can BLE stack and interrupts to trigger I2C run parallely?
3. Is BLE well suited if I want to send data of 200Kbits within 3 seconds? Or do I need to move to Bluetooth Classic solution?

Thank you in advance
Regards
Rahul Shah

  • 1. If your collect 200Kbits data, it is too large to use BLE to transmit it.
    2. You can use Sensor Controller in CC2650 to do I2C data reading in parallel.
    3. I think BT classic would be more suitable.
  • Hi Mr. YiKai Chen,
    Thank you very much for the reply.
    The problem with going for Bluetooth Classic is the Power Consumption. The device is battery powered and it has to run atleast for 4 hours continuously. Also I can not go for high density batteries since weight and form-factor of product are critical. Somehow I need to make sure that the weight of electronics along with battery is not more than 6 g.

    Rather a trade off of 2-3 seconds is OK. But I am just confused that with trade off I can still go with BLE or not.

    Rahul
  • With an android smartphone as master device (motorola moto g, with android 4.4,and cc2540, with cc2650 not yet tested) maximum throughput is 64kbit/s. The bottleneck is android (or bt stack inside smartphone), which doesn't allow to configure the window for more than 3 notification each connection event (when using 7.5ms connection interval).
    With a more powerful device (nexus 9 tablet, android 5.0) it is actually possible to get 4 notifications which lead to 20byte*4noti/7.5ms = 85.4kbit/s.

    So, if you have to send 200kbit each 3 seconds it gives 200/3 = 66.6kbit/s. It over the limit, but it is very close, so maybe you can find a way to make it work by setting a little bit lower sampling period.
    But remember, nothing is not guaranteed, moreover with iOS you can not have 7.5ms as connection interval (the limit is 20ms) and finally the connection could be unstable if you connect any other bt device.

    Maybe you can do a little bit more if you have another cc2540 (or cc2650) instead of a smartphone.