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.

Maximum number Received Adverts before loss?

Hi 

i have a scenario where i have a single base station (CC2540) which only listens for BLE adverts from a number of nodes. 

Each node transmits an advert every 100ms at maximum TX power. 

Each node is within 20 Meters of the base station. 

What i want to know is what is the maximum number of nodes i can have all broadcasting advertisements and have the base station always receiving the advert?

Does the CC2540 provide cross talk protection, either in the firmware or the BLE stack? if so what is the saturation point before adverts will begin to be lost and or never make it to air.

Thank you 

  • Hello,

    Advertisers will randomly add +/- 10ms to keep from always beating each other.   With CC254X, your time catch advertisment/send it up to stack/and start scanning again is about 3-5ms.

    For best results, I would start/stop the scan to avoid GAP_DEVICE_DISCOVERY_EVENT and just handle the GAP_DEVICE_INFO_EVENT , disable filtering,  compile for speed, set maxScanResp=10, scan window& interval to 500ms, HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_DISABLE).

    You should be able to pickup about 100-200 different advertisements per second. Processing these might knock you down some, and like you say, there will be some percentage of advertisers overlapping each other - but should be low percent.  

    -Greg

  • The Random 10ms will not prevent collision at the lowest level though, the phy layer must do some sort of CSMA/CA? 

    While the advert is being sent up the stack will the transceiver continue to receive and buffer following adverts? or is the receiver effectively off during this period?

    Thank you for your reply.

    James 

  • JHough said:
    The Random 10ms will not prevent collision at the lowest level though, the phy layer must do some sort of CSMA/CA?

    No, there is no CSMA/CA in BLE. This is per the standard. The random delay doesn't prevent collisions, but it prevents repeated collisions.

    JHough said:
    While the advert is being sent up the stack will the transceiver continue to receive and buffer following adverts? or is the receiver effectively off during this period?

    I am not quite sure about this one, but as far as I know, only the link layer processing is done before the receiver is restarted. I believe the higher layers do their processing while the receiver is listening.

  • Hello,

    If you go with default settings, there is no processing while radio is on. Use the DisableHaltOnRF to allow processing while scanning ( but also higher power consumption +6mA). As advertisement comes in, the LL gets interrupt and sends packet up. The OSAL loop will try and spin for all processes but may get interrupted by scan start interrupt. One way around this is to make window shorter than interval.

    BR,

    -Greg