CC26xx Range Extender Control
Using a range extender with the CC26xx
The RF Core has 4 internal logical outputs, 2 of these can be used for range extender control. The default configuration of RF Core Data Out 0 is to be high when the LNA is enabled and similarly RF Core Data Out 1 is configured to be high when the PA is active. These RF Core Data outputs can be directly assigned to DIOs through the IO Control registers IOCFGx (x = DIO number) bits 5-0. See the technical reference manual chapter 126.96.36.199 details.
Let's say the PA_enable signal is on DIO7, the LNA_enable signal is on DIO13 and HGM is on DIO14. We thus need to connect RF Core Data Out 0 to DIO13 and RF Core Data Out 1 to DIO7.
Thus the following registers must be set using the CC26xxware driverLib:
- IOCFG7 = 0x30
- IOCFG13 = 0x2F
which can be done through the IOCPortConfigureSet function:
#include <driverlib/ioc.h> // Map RFC_GPO0 to DIO13 IOCPortConfigureSet(IOID_13, IOC_PORT_RFC_GPO0, IOC_IOMODE_NORMAL); // Map RFC_GPO1 to DIO7 IOCPortConfigureSet(IOID_7, IOC_PORT_RFC_GPO1, IOC_IOMODE_NORMAL);
- Note: Remove the associated PA_enable & LNA_enable DIO pins from the BoardGpioInitTable (typically located in the respective board.c file) when configuring the PIN driver. Attempting to initialize the PIN driver with pins defined in the BoardGpioInitTable that are directly opened by driverLib, e.g., IOCPortConfigureSet function, may cause undefined software behavior.
- Note: On the CC2640R2F the PA enable signal has a flaw in which it does not de-assert when the internal PA is turned off. It will only go low when the RF Core is shut down. A work-around for external PA control is to use the TX Start signal instead. This signal will also follow the internal PA control signal, but will go high approximately 10 us earlier than PA enable. TX Start is mapped to RFC_GPO3.
Range extender control implemented in SimpleBLEPeripheral (yellow is PA enable, blue is LNA enable):