How to absolutely control the ESB operating power consumption

I currently use 8 nRF52832 as PTX and 1 nRF52832 as PRX.
To ensure better communication quality, I wrote the code for PIPE allocation.
The channel is assigned by PIPE 0 as PIPE and fed back to PTX, which will use the specified PIPE in the next communication.
Since I use battery power, I need absolute power control, in the ideal case, I control the current around 2ua (turn off ESB and CLOCK after PTX communication)
However, after the PIPE is allocated, the current cannot be maintained at 2ua, but around 400ua, which is strange.
I did the following tests:
1. Turn off dynamic PIPE allocation, and change PIPE statically while the program is running.
2. Turn off all PIPE allocation codes and allocate pipes when burning.
3. Use PIPE0 only

From the results, it seems that the current can be well controlled only when (3). In the case of (2), there are only a few chances to get current control. And (1) is worse.

Of course, our test also found that when the PRX device is offline, the power consumption of PTX per emission will also increase to 400ua, but this is understandable.(Update:I found the reason.)

I change the pipe parameter in the ESB_PAYLOAD between "esb_disable()" and "esb_initialize()" (the function in the routine code).

In RX_EVENT, check if the ESB is free and shut down the ESB and CLOCK.

I want to keep my power consumption around 2ua as much as possible to ensure a long life, so what do I need to optimize?
Thank you

Parents Reply Children
No Data
Related