Hello,
We were middle way during the development when we found out that we had a higher packet loss than what is acceptable.
So we start to analyze this issue.
Scenario:
- We've 1x BL653 running an application
- This application has ESB enabled and is set as PRX;
- Once it gets an ESB packet, it parses the payload (which contains a unique sequential number)
- Switch its role to PTX and reply a packet (broadcast on pipe 0) containing this sequential number as a size of 128 bytes (without auto ack);
- TX power is 4dBm, DPL (dynamic packet length)
- 1x BL654 running a test application
- This application listens to the UART port for commands via the HOST (PC)
- ESB is set as PTX
- Once it gets a command, it parses the message (which should contain a unique sequential number)
- Then builds an ESB Packet of 8 bytes and sends it (broadcast on pipe 0) containing this unique number (without auto ack)
- Gives enough time to broadcast this message (~1000us) and switch role to PRX
- Wait for ~18000us for all devices to respond
- Report statistics to HOST PC
- This BL654 is connected to a PC which runs a test application
- This test application runs every 30ms and writes a sequential and unique number via UART
- Collect statistics from BL654 via UART
Therefore, a packet loss could be a packet that couldn't be delivered to BL653 or either the reply packet that couldn't be delivered to BL654.
Assumptions:
We've verified the UART channel and we're getting 0% of packet loss here.
Questions:
- We would like to know what is the "acceptable" packet loss according to Laird/Nordic measurements?
- Is 1% (according to the scenario detailed below) acceptable?
- Does Nordic provides some table of scenarios and expected packet loss ?
- According to the BL653 specs (datasheet), we could get up to 8dBm for Tx Power, but the Nordic's SDK allows us up to 4dBm.
- If I "hack" the enum esb_tx_power and add the 8dBm option, will it work? (add there: ESB_TX_POWER_8DBM = RADIO_TXPOWER_TXPOWER_Pos8dBm)
- Cause I did it, but I've no evidence that it actually worked…
- Is there a way to make the "serial" line work in parallel with the "RF" line?
- Example: If the BL654 starts writing via UART some payload and at the same time another device (BL653) starts sending data via ESB, will the BL654 be able to collect this ESB packet or we'll get a packet loss?
- Is there a way to guarantee that this communication will happen in parallel?
- We heard about UART DMA, by your experience, will it solve this issue?
- External oscillator could improve the RF performance (reduce packet loss)?