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.

Maxium GATT characteristic attribute update rate in BLE device monitor

Other Parts Discussed in Thread: CC2540, CC2650, CC2640

Hello,

I have been running simpleBLEPeripheral project on CC2650, and communicate with my CC2540 USB dongle in BLE device monitor (version 2.1.2) 

I added ADC service into the project (ported Sensor Controller Studio codes into Code Composer Studio). Once every 10 ADC samples are collected, an interrupt will trigger (fwGenQuickAlertInterrupt()) ADC task  to send these 10 samples out to USB dongle, though GATT notification. Then the USB dongle should display all received data in BLE device monitor event log.

It seems the maximum GATT characteristic attribute update rate in BLE device monitor is 10Hz, which is equivalent to 100Hz sampling rate in CC2650 ADC.

I am not quite sure if this is limited by

1) RTOS time conflict between ADC task and BLE stack task?

I followed this post (e2e.ti.com/.../1720852, and tried commenting out power saving options in main.c:

Power_setConstraint(Power_SB_DISALLOW);
//Power_setConstraint(Power_IDLE_PD_DISALLOW);

But it doesn't work for me.

On the other hand, unfortunately the debug mode in my CCS6.1 is not working properly, especially ROV. (Here is the link to the question I posted in CCS forum regarding non-functional ROV: e2e.ti.com/.../1852378

At this moment, I am not really able to debug and tell if this is a RTOS task conflict problem.

 

2) BLE device monitor itself, probably there is some inherent update rate limit? For example, there is no way that GATT characteristic attribute in BLE device monitor is able to update as fast as 100Hz, or even 1kHz.

Your inputs will be greatly appreciated! Thanks!

Best,

Xiaoxiao

  • Hello Xiaoxiao,

    The limitation is on the dongle side and also with the USB stack transmission speeds. If you use two CC2640 devices, you won't see this limitation.

    Best wishes
  • Hi JXS,

    Thank you for your responses!

    Are you suggesting that I should implement simpleBLEPeripheral project on one CC2640 device, and implement simpleBLECentral project on the other CC2640 device? The central device collects all the data and send them out to other controllers/PC through UART?

    Is there any reference design I can refer to? I checked wiki page but found none.

    Thanks!

    Best,

    Xiaoxiao

  • Xiaoxiao,

    As JXS mentioned, your throughput may be limited by the dongle's settings. Between two CCxxxx devices you will definitely see less latency. The BLE Serial bridge (linked on the wiki) is a good example of streaming data between central and peripheral.

    Another thing to consider is your BLE throughput settings, what is your connection interval, etc? All of this can be tuned to achieve maximum throughput OTA. Please see our high throughput example on the wiki as well. I would try to follow the suggestions there first to see if you can achieve your needs using BLE Dev Mon, moving onto the BLE bridge example to reference should you need to implement the central side.
  • Hi Sean,

    Thank you so much! The BLE bridge project as well as the high throughput example in the wiki is really helpful!

    Actually I am planning on using one central CC2650 device to collect data from 3 peripheral CC2650 devices on BLE link, while each peripheral CC2650 device sends out GATT notification at 400Hz, full packet. Estimate data transmission rate of each peripheral CC2650 device is 400Hz*20bytes=64kbps

    Apparently combination of USB dongle (with HostTest project implemented) and BLE decide monitor doesn't work well for me. Also the idea of using SDI layer over UART port from BLE Bridge project doesn’t seem to work as well since the maximum Baudrate of virtual COM port at PC is 115kbps, and I need a total of 64kbps*3=192kbps.

    Here are my thoughts to solving this problem:

    Use a CC2650 device as network processor (with simpleBLECentral project implemented), collect data from 3 peripheral CC2650 devices, and pass them out to a raspberry pi on UART port or SPI. Then the raspberry pi would send all received data to PC on Ethernet cable.

    It would be greatly appreciated if I can get some feedback from you about two of my concerns:

    1 Do you think if this plan will work, based on the interface module of CC2650?

    2 By checking datasheet of CC2650, it seems the speed limit of CC2650 SPI is 4MHz, while UART has a limit of 3MHz. But generally baudrate of UART is limited to 115200bps. Does it mean that my plan can only work on SPI bus?

    Thanks a lot! Looking forward to your responses!

    Best,

    Xiaoxiao

  • Hello JXS,

    I am planning on using one central BLE-enabled device to collect data from 3 peripheral CC2650 devices on BLE link, while each peripheral CC2650 device sends out GATT notification at 200Hz, full packet. Estimate data transmission rate of each peripheral CC2650 device is 200Hz*20bytes=32kbps

    I have a few plans about how to implement this central BLE-enabled device:

    Plan-1: CC2540 USB dongle + HostTest project

    Pros: CC2540 device has USB interface, which allows higher data transmission rather than 115200kbps (max baud rate of UART)

    Cons:

    a)      I need to write a program which basically does the same thing as BLE device monitor does to communicate with the CC2650. Working with HCI interface requires good understanding in BLE and will be a lot of coding work.

    b)      Since CC2650 is able to be firmware-upgraded to BLE4.2, while CC2540 is certainly not. When CC2650 device with BLE4.2 establishes link with CC2540 with BLE4.0, am I still able to get the features of BLE4.2? For example, extension of packet length, added security.

    Plan-2: Raspberry pi-3

    Pros: raspberry pi-3 supports BLE 4.1!

    Cons: Similar to plan 1

    a)      Difficulty of HCI interface programming?

    b)      BLE4.2 and BLE4.1 compatibilty?

     

    Plan-3: CC2650 + simpleBLECentral project + Rasperry pi

    Use a CC2650 device as network processor (with simpleBLECentral project implemented), collect data from 3 peripheral CC2650 devices, and pass them out to a raspberry pi on UART port or SPI. Then the raspberry pi would send all received data to PC on Ethernet cable.

    Pros: Seems straightforward

    Cons: Careful interface coordination to get things working properly

    Is it possible that I can get some feedback from you about the three plans?

    Any suggestion or inputs will be greatly appreciated!

    Thanks!

    Best,

    Xiaoxiao