As well know, there have 100 channels in ESB function in nRF52832, but 2.4GHz also share with Wifi and Bluetooth.
So there have many noise if I choice wrong channel.
How can I detect the RF noise in each channel and choice the best one?
While the radio can be configured to use 100 different channels, you should stick to channels 0-83 in order to ensure you meet ETSI and FCC requirements (1-82 if you use 2Mbps modulation).
It is possible to read the current RSSI state on any RF channel when you are in receive mode, which can give you an estimate off the amount of noise on that channel at a specific point in time, but this is not handled automatically by the ESB library. You would have to add some additional code to enable RSSI manually when the radio is in receive mode, as described in the product specification.
An alternative method to avoid bad channels is to look at the number of lost packet (when you don't receive an ACK). As long as you get an ACK on a certain channel you can assume that the link quality is good enough, but if you see that you lose a lot of packets then you could try to change to a different RF frequency to see if the link quality improves.
Thank you for your description.
Would you please give me the sample code to detect the environment noise?
Do you have any comment of this issue?