This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Frontend support

I know that the SoftDevice has support for controlling a frontend with TX and RX signals.

However, our radio module uses a Skyworks SE2431L frontend with the control signals:

CPS CSD CTX
Sleep mode 0 0 0
Bypass mode 0 1 0
RX LNA mode 1 1 0
TX mode x 1 1

By using the example of the frontend control it would be possible to have it control CPS and CTX control, which would allow the SoftDevice to switch between TX, LNA and bypass. However, due to energy efficiency it would be preferred to have it also control CSD, so that it switches between TX, LNA and Sleep mode instead.

Is this possible to  achieve with the frontend control of the Softdevice?

  • Since CTX maps easily to TX, and CPS maps to RX in PA_LNA Assist in the softdevice as you stated the only thing you need to solve is CSD. Easiest and most reliable way is to use radio_notifications and then set CSD appropriately in the interrupt handler for either radio becoming active or radio finishing up. The only drawback to this method is that the notification ISR sits on the outside of the radio frame so say on an advertisement you will wake up the FEM just before the radio turning on, it will transmit a packet on each advert channel and then you get an ISR when it is all done.  So you will give up a few hundred microseconds of sleep time.  However, since CTX/CPS will reliably track the radio events due to PA_LNA assist, the difference will be minor.

    You could try to implement something directly using PPI/GPIOTE and the radio events, but they constantly reuse timers and events and the logic isn't always clear when working outside of the softdevice.  But, if you choose to go that route just look up one of my postings from about 2 years ago where I did just that for the DTM software. You can probably gain some insight from it.

    I would choose radio notifications though if I were doing it.

Related