ESB RF transmission is too slow

Hello, 

I'm trying to figure out what I am doing wrong (or what I misunderstood) about the bitrate.

According to my benchmark, it takes 1.42ms to send 128 bytes using ESB as following:

- protocol: ESB_PROTOCOL_ESB_DPL
- bitrate: ESB_BITRATE_2MBPS
- no retransmit

This means that I can push around ~90,140 bytes / second (not including protocol related data). 

2Mpbs is around 0.25MB/s, I'm getting 0.1MB/s

Questions:

1. Any obvious reason why my bitrate is too slow? (acks or protocol overhead?)

2. Using 2 pipes at same time could improve performance or will it lead to some "packet collision" issue?

Thanks in advance!

Parents
  • Hi,

     

    I'm trying to figure out what I am doing wrong (or what I misunderstood) about the bitrate.

    According to my benchmark, it takes 1.42ms to send 128 bytes using ESB as following:

    - protocol: ESB_PROTOCOL_ESB_DPL
    - bitrate: ESB_BITRATE_2MBPS
    - no retransmit

    Are you also getting data back from the PRX device, using the ACK payload?

     

    1. Any obvious reason why my bitrate is too slow? (acks or protocol overhead?)

    If you are sending 128 bytes, I'm rounding up to 140 bytes incl. overhead, it should take:

    t_ramp_up + 140 bytes * 8 bits / 2 Mbit = 130 us + (1120 bits / 2 Mbit) = ~690 us.

    Then you also have to account for the ACK from the PRX.

    If this is a zero byte packet, the packet is approx. 10 bytes (approximation, I do not know your address + crc settings):

    130 + 10 * 8 / 2 MBit = 170 us.

     

    Add those together, and you're just shy of 900 us for one ideal transmission.

    If you also send 128 bytes back from the PRX to the PTX (ie. an ACK payload), you're at approx. 1.4 ms.

    2. Using 2 pipes at same time could improve performance or will it lead to some "packet collision" issue?

    If you have a one-to-one transmission, using several pipes does not help wrt. performance.

     

    Kind regards,

    Håkon

  • Hi Hakon, thank to your insights, I've found what I've done wrong.

    My ACK was huge (I was mirroring the ACK).

    After measuring it again with smaller ACK payload (around 14 bytes, including headers) I got the following table:

    Bytes [Payload + Header] Send in ms
    252 1.44
    140 0.97
    76 0.71
    44 0.57

    Expected: 2Mpbs == 0.25MB/s == 4us to send 1 byte.

    Plotting these values in an excel graph + trendline, it gave me the following formula:

    y = 0.0042x + 0.3888

    Conclusion: This means ~4.2us to send 1 byte. (0.3888 is some constant offset (probably related to the protocol usage itself))

    So I see that the bitrate is according to the specs Slight smile

    Thank you !

  • Hi,

     

    Great to hear that it all checked out. Always happy to help out!

    Hope you have a wonderful day :) 

     

    Kind regards,

    Håkon

Reply Children
No Data
Related