This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

BLE Advertisement Rate & Actual Rate Do Not Match

FormerMember
FormerMember

I currently have a Braveridge device which uses an advertising rate of 50 Hz (connection interval is 20ms)

CONNECTABLE_ADV_INTERVAL is set to 0x0020

sd_ble_gap_adv_start(&m_adv_params);

In the advert packet I have a counter(1byte), so I can determine when packets are lost at the receiver end (In this case a PC or Android). Packets are lost. This isn't an issue.

Using the counter, and a timer at the PC end, I have estimated the average transmission rate. The actual transmission rate comes out at a about 40Hz(39Hz->41Hz). The application is very basic, it simply sends the counter data in the advertisment packet. The app has no other functionality.

The Nordic API is very clear, so I can see no issues there. At lower frequencies, I can also see the actual transmission frequency is lower than that set in software.

I'm not sure of the cause, perhaps it is hardware, or perhaps the software can't keep up.

  • Good question.

    From the Bluetooth Core specification, Vol 6, Part B, Section 4.4.2.2:

    The time between two the start of two consecutive advertising events is computed as follows for each advertising event:

    T_advEvent = advInterval + advDelay

    The advDelay is a pseudo-random value with a range of 0 ms to 10 ms generated by the Link Layer for each advertising event.

    If this averages to 5 ms you end up with (20ms + 5ms)f = 1000ms -> f=40Hz.

  • Hello. Considering the effect of the advDelay, it seems impossible to match with the Apple requirements. (Bluetooth Accessory Design Guidelines for Apple Products, section 3.5, Advertising Interval)

    Let's say I want to select 318.75 ms, which value should be selected?

    Which should be the correct advertising interval setting? 324? (319 + advdelay/2) Regards.

Related