This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Do I understand BLE Connection Interval properly?

Hello,

I am trying to understand a bit better BLE throughtput in order to use it for my application, having read this Nordic Blog, this post and ATT_MTU Throughput Example

I have a question regarding to the parameter so called Connection Interval, I have drawn the following sketch for myself to clarify my explanation. So, if I have understood properly, the parameter called Connection Interval is actually the minimun time between Connection1 (Peripherial<->Central) and Connection 2 (Peripherial<->Central), is that correct? Meaning that I have to wait Connection Interval in order to create another Conection 3 (no depicted) between my Peripherial and the Central, right?

Finally, in order to calculate the throughput of the BLE connection, that is done once the connection itself has been carried out, and therefore only Scan interval, Scan Window and DLE would be involved, wouldn't they?

image description

Thanks in advance,

  • No. Connection interval is the time between one radio event on a given connection and the next radio event on the same connection. BLE devices agree on this interval at the start of the connection (and can renegotiate it later). That means that every connection interval the central sends out a packet (even if it's an empty one) and the peripheral turns its radio on and listens. If there is data then packets are sent for a while, then the radio goes off until the start of the next radio event (which is one connection interval after the start of the last one).

    This is how BLE is energy efficient, you can't send at any time, only occasionally. If your connection interval is long then it sending data may be slow as it can only be sent out during radio events and they occur only every 'connection interval' milliseconds.

    Note that more than one packet of data can be sent out in one radio event so connection interval is not the time between packets, it's the time interval at which the central and peripheral agree to talk to each other and ask if there is any data to send. The radio events may be very short (no data) or quite long (data to send) but they always start one 'connection interval' apart.

    One small detail, the peripheral may have something called 'slave latency', which by default is zero. If non-zero, the peripheral is allowed to skip up to slave latency radio events and not listen. That saves even more power, at the expense of even slower data. The central always sends on the connection interval, but the peripheral may choose to listen only now and again.

  • Ok, then if my Pheripherial wants to send data to the Central, it will do it with a minimun period of Connection Interval right?

Related