TX Power

Note

You can read more about TX power configuration and setting the TX power in the RF driver chapter of the TI Driver API Reference.

TX power, short for transmit power, is a parameter used to set a desired output power during packet transmissions. The TX power level is programmable at run-time, and will only take affect on the next transmission.

A specific TX power configuration will match a desired output power in dBm. In most use cases, a specific output power in dBm is desired and the TX power configuration that corresponds to that output power must be specified. That means you don’t necessarily set any arbitrary TX power configuration and then measure what the output power is.

TX Power Configuration

A TX power configuration is represented by a hexadecimal value, which represents a bit field of multiple parameters. Two types of TX power configurations are possible depending on which RF front-end is used: one for default power amplifier (PA) and one for the high-power PA.

Note

The high-power PA is only available on the CC1352P device.

For the default PA, a TX power configuration consists of the parameters as described below. When all parameters are set, a resulting 16-bit hexadecimal value represents the TX power configuration. This 16-bit hexadecimal is contained in the txPower variable in your radio setup command.

Table 10. Default PA TX power configuration
Parameter Description
Current Bias (IB) Value to write to the PA power control field at 25 ° C
Gain Control (GC) Value to write to the gain control field of the PA
Boost Bit Select between low or high driver strength into the PA
Temp. Coefficient Temperature coefficient for IB

For high-power PA, a TX power configuration consists of the parameters as described below. When all parameters are set, a resulting 22-bit hexadecimal value represents that TX power configuration. This 22-bit hexadecimal is contained in the override list of your radio setup command. (When the high-power PA is in use, the txPower variable in your radio setup command is not used.)

Table 11. High PA TX power configuration
Parameter Description
Current Bias (IB) Value to write to the PA power control field at 25 ° C
IB Boost Value to write to the bias control field of the PA
Boost Bit Select between low or high driver strength into the PA
Temp. Coefficient Temperature coefficient for IB
PA LDO Trim Value to write to the output voltage control of the +20 dBm PA LDO

For a more detailed overview of each bit field, refer to the CC13x0 CC26x0 SimpleLink Wireless MCU Technical Reference Manual.

Note

The values for all parameters are usually measured by Texas Instruments for a specific front-end configuration, and should be obtained from SysConfig or SmartRF Studio rather than deduced by yourself.

TX Power Tables

TX power configuration is usually done via SysConfig or via code export in SmartRF Studio . A default TX power configuration is set, in addition to a TX power table being configured/exported alongside the settings.

A TX power table is a lookup table of all TX power table entries which are characterized for the given RF front-end configuration. A TX power table entry is a key-value pair, where the key is a human-readable power level in dBm and the value a TX power configuration value.

The RF driver defines the types used in context with the TX power table, as well as convenience macros and functions for querying and manipulating the table.

There are two macros for defining a TX power configuration value: RF_TxPowerTable_DEFAULT_PA_ENTRY() for default PA entries, and RF_TxPowerTable_HIGH_PA_ENTRY() for high-PA entries. See below for how the macro is structured. Note how the macro arguments compare to the TX power configuration parameters, as detailed in TX Power Configuration.

#define RF_TxPowerTable_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient) /* ... */
#define RF_TxPowerTable_HIGH_PA_ENTRY(bias, ibboost, boost, coefficient, ldotrim) /* ... */

If you generate/export any RF settings for CC13x0, depending on which RF front-end configuration you are using, you will see in ti_radio_config.c or *smartrf_settings.c*a new array called txPowerTable with the following syntax:

// Default PA TX Power Table
RF_TxPowerTable_Entry txPowerTable[] = {
    // ...
    { 11, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 0, 0, 71)},
    { 12, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 0, 64)},
    // ...
    RF_TxPowerTable_TERMINATION_ENTRY
};

The array consists of TX power table entries in ascending order based on the human-readable power level, with the lowest power level at index 0 and the highest power level at index N - 2.

Programming the TX Power Level

The application can program a TX power level by using the RF driver. For each RF client, the TX power is programmed with the function RF_setTxPower(). The new value takes immediate effect and is used next time transmission starts. If a packet is being transmitted, the new value will not be updated until transmission starts for the next packet.

Given the TX power table format, the application may program a new power level in multiple ways. It can use convenience functions to search for a certain power level in the table, or may access the table by index:

// Set a certain power level. Search a matching level.
RF_setTxPower(h, RF_TxPowerTable_findValue(txPowerTable, 17));

// Set a certain power level with a known level.
RF_setTxPower(h, txPowerTable[3].value);

// Set a certain power without using a human readable level.
RF_setTxPower(h, value);

// Set maximum power. Search the value.
RF_setTxPower(h, RF_TxPowerTable_findValue(txPowerTable, RF_TxPowerTable_MAX_DBM));

// Set minimum power without searching.
RF_setTxPower(h, txPowerTable[0].value);

// Set minimum power. Search the value.
RF_setTxPower(h, RF_TxPowerTable_findValue(txPowerTable, RF_TxPowerTable_MIN_DBM));

The current configured TX power level for a RF client can be retrieved with the function RF_getTxPower().

// Get the current configured power level.
int8_t power = RF_TxPowerTable_findPowerLevel(txPowerTable, RF_getTxPower(h));

Enable VDDR Boost Mode

Note

The VDDR boost mode is only available on CC13x0 and CC13x2.

In the CCFG area (ccfg.c), there is a CCFG_FORCE_VDDR_HH define. If this value is set to 0, the maximum output power for the device is +12.5 dBm. If you wish to increase the output power further, set CCFG_FORCE_VDDR_HH to 1. With CCFG_FORCE_VDDR_HH to 1 the maximum output power is +14 dBm.

Example of how this can be done is shown below:

// ccfg.c
#define CCFG_FORCE_VDDR_HH  1
// ... Use default values for all others
#include <ti/devices/DeviceFamily.h>
#include DeviceFamily_constructPath(startup_files/ccfg.c)

Use the +20 dBm Power Amplifier

Note

The +20 dBm PA is only available on the CC1352P device. (The associated development boards are LAUNCHXL-CC1352P1, LAUNCHXL-CC1352P-2 and LAUNCHXL-CC1352P-4).

The CC1352P launchpads have three RF ports, configured for different frequency bands and transmit power ranges:

RF Port Frequency Band Transmit Power Range
Pin 1 and 2 2.4 GHz +5 dBm PA and LNA
Pin 3 and 4 Sub-1 GHz -20 dBm to + 13.5 dBm PA and LNA
Pin 5 and 6 Sub-1 GHz or 2.4 GHz +14 dBm to +20 dBm

On the CC1352P launchpads, the RF ports are tuned for the following frequency bands:

Development Board Pin 1/2 Pin 3/4 Pin 5/6
LAUNCHXL-CC1352P1 2.4 GHz 868/915 MHz 868/915 MHz
LAUNCHXL-CC1352P-2 2.4 GHz 868/915 MHz 2.4 GHz
LAUNCHXL-CC1352P-4 2.4 GHz 420 - 510 MHz 470 - 510 MHz

In order to use the +20 dBm PA, define USE_SUB1_HIGH_PA_SETTING in the smartrf_settings source file.

Attention

If you enable the high PA setting for the SLR mode in the 433 MHz band it will violate the maximum power output requirement for this band.

For the LAUNCHXL-CC1352P-4, it is also worth noting that defining USE_SUB1_HIGH_PA_SETTING in the smartrf_settings file will change the center frequency to the following frequencies:

Mode Default Frequency +20 dBm PA Frequency
2-GFSK N/A 490 MHz
SLR 433.92 MHz 433.0 MHz

Per default, the examples use the 433.92 MHz frequency. This means that for example, if you define USE_SUB1_HIGH_PA_SETTING in your TX project, you must update the center frequency in your RX project accordingly.