Electrical – Improve the time of BLE beacon scan

atmelbluetoothbluetooth low energymicrocontroller

I have 3 Atmel MCU based BLE scanners, each uses TI CC2540 based BLE module (PDF User Manual) chip to scan for the advertise packets (bluetooth Beacons) around.
There are approx. 10 Beacons at a time around the scanner sending advertisiment packets every 100ms. The scanner needs only Minor, Major and the txPower of the each beacon.

The scanner sends an "AT+DISI" (start Beacon discovery s. User Manual) command over serial interface to the BLE Module and waits for the data response.

Everything works fine, but the time, until all data completely arrives takes around 5 seconds.

Since I want to scan for the Beacons one or two times a second, I need to improve the scanning time.
Some possible options I thought about:

  1. connect 5 BLE modules to the microcontroller using serial port expander, successively send scan command with 1s time offset and at the same time collect data recieved so data arrives every second.
  2. Make use the 8051 MCU inside the CC2540, which may improve the speed, since no serial communication to external MCU is needed.
  3. Develop custom BLE profile, which has less payload and Beacon / scanner firmware that sends / listens on the constant frequency.
  4. Using another chip / technology

What is the best way to scan for a dozen of the BLE Beacons one-two times a second?

Related questions I read:

  1. How to scan for all available beacons with BLE – similar scenario, except I have 10 beacons at a time and less than a second to scan.
  2. BLE scan interval and window

Best Answer

The BLE Chip that was used, uses the Serial communication to send the data to the µC. In this case it produces some overhead for the chip. The problem was solved by 4. option using the another BLE chip with SoftDevice on the emedded µC. So there no more serial communication needed and the scanning and procesing happens in a single chip.