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

Max throughput for 52832 single peripheral

Hi,

  • What's the maximum throughput for nRF52832 as peripheral?
  • S132 7.1 SDS demonstrates configuration for 192kbps. But I noticed that DLE is not yet enabled. So can it be even faster? For instance, reach 50KB/s? If it can be, how do I set those parameters?

  • Another thread mentioned that, RAM for softdevice needs to be modified when attempting to extend gap_event_length. Any further explanation on relationship between event_length and RAM?

Your help is appreciated,

Ava

Parents
  • Hello Ava,

    That is probably correct. I usually refer to the power profiler, which also provides a graph of which you can read out the time spent.

    If you have 50kB/s = 400kbps and a 8ms conn_interval (or really a 8.75, since this interval is given in units of 1.25ms), means you have ~114 connection intervals per second, and you need to transfer ~400 000 bits per second = 438 bytes per connection interval. 

    in the power profiler, it will give something like this:

    Just be aware that when you do this, if you loose a packet on air, which will happen from time to time, then the link has no way of catching up (because lost packets are retransmittet until they are acked. And hence, unless you keep track of how many packets that are in the queue at all times, you will start to lag behind. So having two large packs per connection interval is perhaps not the ideal setup, you have no way (no time) to catch up with lost packets. 

    So either you need to split it into smaller packets, but that will take longer time on air (because of a larger header/payload ratio), or increase the connection interval to allow for one extra packet, but then that would mean you have fewer connection events per second, and you would need to fit more data. 

    So in theory, yes it is possible, but depending on how your application will cope with dataloss, it may be close to the limit. You can try to experiment with the parameters in the power profiler. 

    Best regards,

    Edvin

Reply
  • Hello Ava,

    That is probably correct. I usually refer to the power profiler, which also provides a graph of which you can read out the time spent.

    If you have 50kB/s = 400kbps and a 8ms conn_interval (or really a 8.75, since this interval is given in units of 1.25ms), means you have ~114 connection intervals per second, and you need to transfer ~400 000 bits per second = 438 bytes per connection interval. 

    in the power profiler, it will give something like this:

    Just be aware that when you do this, if you loose a packet on air, which will happen from time to time, then the link has no way of catching up (because lost packets are retransmittet until they are acked. And hence, unless you keep track of how many packets that are in the queue at all times, you will start to lag behind. So having two large packs per connection interval is perhaps not the ideal setup, you have no way (no time) to catch up with lost packets. 

    So either you need to split it into smaller packets, but that will take longer time on air (because of a larger header/payload ratio), or increase the connection interval to allow for one extra packet, but then that would mean you have fewer connection events per second, and you would need to fit more data. 

    So in theory, yes it is possible, but depending on how your application will cope with dataloss, it may be close to the limit. You can try to experiment with the parameters in the power profiler. 

    Best regards,

    Edvin

Children
  • Hi Edvin,

    Thanks for replying!

    Just for double check:

       -How do we define smaller packets? To keep payload size within DLE (27Bytes)?

    So either you need to split it into smaller packets

       -In order to prevent package lost, I'll send at most one large pack per event. Thus the max throughput would be around 263.474kbps according to profiler. Is that right?

    Best regard,

    Ava

  • Hello Ava,

    Yes. The max payload in a single packet is 247 bytes (of payload). 

    While you are pushing the limit of what is possible with that short connection interval, you still have some to spare from the theoretical maximum if you can adjust your connection parameters, then you can get a higher throughput (i.e. more room for packet loss). 

    I suggest that you check out the throughput for different connection parameters using the ble_app_att_mtu_throughput example. 

    Best regards,

    Edvin

Related