PHY Configuration

Each PHY on the CC13xx and CC26xx is configured by a combination of

  1. A Setup radio operation command,

  2. RF core firmware patches,

  3. RF core register overrides.

All these settings are generated using SysConfig (SmartRF Studio can also be used). This section explains the necessary basics for understanding these files and for making minor tweaks.

When using the RF driver, all 3 parts, the setup command, patches and overrides are used as parameters for RF_open():

RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, NULL);

Read more on setting up the RF core:

Setup Command

The setup command is the first radio operation that is posted to the RF core after power-up. Each PHY has its own flavored command. Usually, it programs basic configuration parameters like the modulation format and the symbol rate.

For the proprietary PHY, for instance, two different setup commands exist:

  • CMD_PROP_RADIO_SETUP can only be used when operating at 2.4 GHz as it does not contains the frequency divider setting needed for the sub-1 GHz band.

  • CMD_PROP_RADIO_DIV_SETUP must be used when operating in the Sub-1 GHz band, and can be used when operating on the 2.4 GHz band.

The relationship of both commands is shown in the following image.

../_images/aafig-ff906f2e833a6cfc10de60cd289506c91dd0e36c.png

Patches

Patches are additions to the RF core firmware. The CC13xx and CC26xx family is shipped with a RF core firmware in ROM. Whenever an issue is observed, additional features are added or a new chip revision is published, some firmware changes might become necessary. Patches are provided as binary blob for the CPE, MCE and the RFE. They are part of the device-specific content in the SimpleLink CC13xx/CC26xx SDK. Patches are loaded into the RF core RAM when powering up the RF core. The RF driver combines pointers to all patches in a structure called RF_Mode, for instance:

RF_Mode RF_prop =
{
    // ...
    .cpePatchFxn = &rf_patch_cpe_genfsk,    // Command and Packet Engine
    .mcePatchFxn = 0,                       // Modem Control Engine
    .rfePatchFxn = &rf_patch_rfe_genfsk,    // Radio Front-end Engine
    // ...
};

The table below give a brief overview over the patches for CC13xx and when and how they are used.

For the patches where it’s referred to SmartRF Studio in the table below, do a code export to see the usage.

Table 4. Patch overview

Patch

Short description

Link to further documentation

rf_patch_cpe_bt5

CPE patch for BLE

Use the provided examples and settings from the SDK

rf_patch_cpe_ieee_802_15_4

CPE patch for Zigbee

Use the provided examples and settings from the SDK

rf_patch_cpe_multi_bt5_coex

CPE patch for BLE co-existence

Please see Coexistence for details

rf_patch_cpe_multi_protocol

CPE patch for the RF driver

See DMM examples. This patch is used if more than one protocol is used

rf_patch_cpe_multi_protocol_rtls

CPE patch for the RF driver

See DMM examples. This patch is used if more than one protocol is used and RTLS is used

rf_patch_cpe_prop

CPE patch for the RF driver

Use the provided examples and settings. Look for settings with FSK in the name in SmartRF Studio

rf_patch_mce_genook

MCE patch to support OOK.

Use the provided examples and settings. Look for settings with OOK in the name in SmartRF Studio

rf_patch_mce_iqdump

MCE patch to dump IQ samples

More information regarding this patch could be found in CC13xx IQ Samples

rf_patch_mce_wb_dsss

MCE patch to support WB DSSS

More information regarding this patch could be found in Wide-Band DSSS Mode

rf_patch_mce_wmbus_ctmode

MCE patch to support wmbus. Combined C and T-Mode

Use the provided examples and settings. Look for settings with WMBUS in the name in SmartRF Studio

rf_patch_mce_wmbus_smode

MCE patch to support wmbus. S-Mode

Use the provided examples and settings. Look for settings with WMBUS in the name in SmartRF Studio

rf_patch_rfe_ble_coex

RFE patch for BLE co-existence

Please see Coexistence for details

rf_patch_rfe_genook

RFE patch to support OOK

Use the provided examples and settings. Look for settings with OOK in the name in SmartRF Studio

Overrides

Overrides contain additional configuration settings for the RF core firmware that are not part of the setup command. They are written into the RF core RAM and can be seen as variables of the RF core firmware. Overrides are interpreted by the RF core firmware and therefore, their order is important. Several types exist:

  • overrides that write to internal hardware registers on the RF core

  • overrides that write to firmware parameters located in the RF core RAM

Overrides are usually taken as-is from SysConfig (or SmartRF Studio). They are gathered in a 1-dimensional array of integers that is terminated by 0xFFFFFFFF and then linked to the pRegOverride parameter in the setup command:

// Overrides for CMD_PROP_RADIO_DIV_SETUP
static uint32_t pOverrides[] =
{
    // 0: Run MCE firmware from ROM.
    // 4: Run MCE firmware from ROM bank 4.
    // 0: Use MCE firmware in mode 0. Sometimes, a patch provides more than one operation mode.
    // 1: Run RFE firmware from RAM (use the patch instead of the ROM.
    // 0: Does not apply, since RFE firmware runs from RAM.
    // 0: Run RFE firmware in mode 0.
    MCE_RFE_OVERRIDE(0,4,0,1,0,0),
    // ...
    // Termination value
    (uint32_t)0xFFFFFFFF
}

RF_cmdPropRadioDivSetup.pRegOverride = &pOverrides;