Other Parts Discussed in Thread: CC2652PSIP, CC2652P7, SYSCONFIG
Tool/software:
Hi,
I am here to ask how to set 10dbm Power Amplifier in Launchpad - CC2652PSIP
I also need information on how to set 20 dbm Power Amplifier in CC2652P7 MCU
Thank you
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software:
Hi,
I am here to ask how to set 10dbm Power Amplifier in Launchpad - CC2652PSIP
I also need information on how to set 20 dbm Power Amplifier in CC2652P7 MCU
Thank you
Hi Kumaravel,
Here is a full write-up for the CC2652P7 +20 dBm workaround which you can follow:
https://e2e.ti.com/f/1/t/1274602
https://e2e.ti.com/f/1/t/1268628
The CC2652PSIP datasheet clarifies that this device has a maximum of +10 dBm output TX power, which is supported in the SDK examples.
Regards,
Ryan
can you please attach the sdk example code for TI proprietary RF CC2652PSIP with +10dbm output TX power configuration.
Hi Kumaravel,
High PA operation is not validated for the Proprietary RF PHYs as there is too much variability with the RF parameters to allow larger TX output values at 2.4 GHz. You will find that this is similar for any SimpleLink Connectivity 2.4 GHz frequency band P-variant device's Proprietary RF settings. Thus +10 dBm operation is not made available in either the SDK or Smart RF Studio 7. If you can use the BLE or IEEE PHYs within a Proprietary RF example (selectable from the SysConfig file) then you will find that High PA is available and +10 dBm can be selected.
Regards,
Ryan
Hi Ryan,
We have done our hardware part, and our requirement is to make it with Proprietary RF only. So please direct us on how to enable Proprietary RF High PA for CC2652PSIP with 10 dbm power and CC2652P7 with 20 dbm power. Since it is not mention in any line from Datasheet that High PA "+10 dBm operation is not made available in either the SDK or Smart RF Studio 7".
Regards,
kumaravel
Did you reference the relevant E2E thread? Here is an example of ti_radio_config.c/h files which use a +10 dBm power table instead of +20 dBm.
/*
* ======== ti_radio_config.c ========
* Configured RadioConfig module definitions
*
* DO NOT EDIT - This file is generated for the CC1352P1F3RGZ
* by the SysConfig tool.
*
* Radio Config module version : 1.17.2
* SmartRF Studio data version : 2.29.0
*/
#include "ti_radio_config.h"
#include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_prop.h)
// *********************************************************************************
// RF Frontend configuration
// *********************************************************************************
// RF design based on: LAUNCHXL-CC1352P-2
// TX Power tables
// The RF_TxPowerTable_DEFAULT_PA_ENTRY and RF_TxPowerTable_HIGH_PA_ENTRY macros are defined in RF.h.
// The following arguments are required:
// RF_TxPowerTable_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient)
// RF_TxPowerTable_HIGH_PA_ENTRY(bias, ibboost, boost, coefficient, ldoTrim)
// See the Technical Reference Manual for further details about the "txPower" Command field.
// The PA settings require the CCFG_FORCE_VDDR_HH = 0 unless stated otherwise.
// 2400 MHz, 5 dBm
RF_TxPowerTable_Entry txPowerTable_2400_pa5[TXPOWERTABLE_2400_PA5_SIZE] =
{
{-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 2) }, // 0x04C6
{-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 3) }, // 0x06C8
{-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 3) }, // 0x06CA
{-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 5) }, // 0x0ACC
{-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 5) }, // 0x0ACF
{-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 5) }, // 0x0AD0
{-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 8) }, // 0x10D4
{-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 3, 0, 9) }, // 0x12D6
{-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 2, 0, 12) }, // 0x1893
{0, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 1, 0, 20) }, // 0x2853
{1, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 1, 0, 20) }, // 0x2856
{2, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 1, 0, 25) }, // 0x3259
{3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 1, 0, 28) }, // 0x385D
{4, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 39) }, // 0x4E63
{5, RF_TxPowerTable_DEFAULT_PA_ENTRY(23, 0, 0, 57) }, // 0x7217
RF_TxPowerTable_TERMINATION_ENTRY
};
// 2400 MHz, 20 dBm
RF_TxPowerTable_Entry txPowerTable_2400_pa10[TXPOWERTABLE_2400_PA10_SIZE] =
{
{6, RF_TxPowerTable_HIGH_PA_ENTRY(42, 0, 1, 39, 20) }, // 0x144F2A
{7, RF_TxPowerTable_HIGH_PA_ENTRY(31, 1, 0, 20, 20) }, // 0x14285F
{8, RF_TxPowerTable_HIGH_PA_ENTRY(26, 1, 1, 25, 16) }, // 0x10335A
{9, RF_TxPowerTable_HIGH_PA_ENTRY(31, 1, 1, 31, 16) }, // 0x103F5F
{10, RF_TxPowerTable_HIGH_PA_ENTRY(38, 1, 1, 39, 16) }, // 0x104F66
RF_TxPowerTable_TERMINATION_ENTRY
};
//*********************************************************************************
// RF Setting: 250 kbps, 62.5 kHz Deviation, MSK, 530 kHz RX Bandwidth
//
// PHY: 2msk250kbps
// Setting file: setting_tc902.json
//*********************************************************************************
// PARAMETER SUMMARY
// RX Address Mode: No address check
// Frequency (MHz): 2440.0000
// Deviation (kHz): 62.5
// Packet Length Config: Variable
// Max Packet Length: 255
// Preamble Count: 4 Bytes
// Preamble Mode: Send 0 as the first preamble bit
// RX Filter BW (kHz): 529.8
// Symbol Rate (kBaud): 250.000
// Sync Word: 0x930B51DE
// Sync Word Length: 32 Bits
// TX Power (dBm): 5
// Whitening: No whitening
// TI-RTOS RF Mode Object
RF_Mode RF_prop =
{
.rfMode = RF_MODE_PROPRIETARY_2_4,
.cpePatchFxn = &rf_patch_cpe_prop,
.mcePatchFxn = 0,
.rfePatchFxn = 0
};
// Overrides for CMD_PROP_RADIO_DIV_SETUP_PA
uint32_t pOverrides[] =
{
// override_tc902.json
// DC/DC regulator: In Tx, use DCDCCTL5[3:0]=0x3 (DITHER_EN=0 and IPEAK=3).
(uint32_t)0x00F388D3,
// Rx: Set anti-aliasing filter bandwidth to 0x5 (in ADI0, set IFAMPCTL3[7:4]=0x5)
ADI_HALFREG_OVERRIDE(0,61,0xF,0x5),
// Tx: Configure PA ramp time, PACTL2.RC=0x1 (in ADI0, set PACTL2[4:3]=0x1)
ADI_2HALFREG_OVERRIDE(0,16,0x8,0x8,17,0x1,0x0),
// Rx: Set AGC reference level to 0x1E (default: 0x2E)
HW_REG_OVERRIDE(0x609C,0x001E),
// PDIFLINPREDEN = 0 (bit 3) PDIFLIMITRANGE = 1 (bit 0). Default 0x40F6 (0x40F7)
HW_REG_OVERRIDE(0x50D4,0x40F7),
// Enable piecewise linear shaper.
(uint32_t)0x00810083,
// Enable piecewise linear shaper.
(uint32_t)0x001000A3,
// No automatic shape programming.
(uint32_t)0x000000C3,
// No automatic shape programming.
(uint32_t)0x000000E3,
// 6 element override starting from 0x4040
HW32_ARRAY_OVERRIDE(0x4040,6),
// Shape override.
(uint32_t)0x0000B19A,
// Shape override.
(uint32_t)0x00013199,
// Shape override.
(uint32_t)0x00000000,
// Shape override.
(uint32_t)0x00000000,
// Shape override.
(uint32_t)0x00000000,
// Shape override.
(uint32_t)0x00000000,
(uint32_t)0xFFFFFFFF
};
// Overrides for CMD_RADIO_SETUP_PA
uint32_t pOverrides_TxStd[] =
{
// override_txstd_placeholder.json
// TX Standard power override
TX_STD_POWER_OVERRIDE(0x7217),
// The ANADIV radio parameter based on LO divider and front end settings
(uint32_t)0x05320703,
// override_txstd_settings.json
// Set RTIM offset to default for standard PA
(uint32_t)0x00008783,
// Set synth mux to default value for standard PA
(uint32_t)0x050206C3,
// Set TXRX pin to 0 in RX and high impedance in idle/TX.
HW_REG_OVERRIDE(0x60A8,0x0401),
(uint32_t)0xFFFFFFFF
};
// Overrides for CMD_RADIO_SETUP_PA
uint32_t pOverrides_Tx20[] =
{
// override_tx20_placeholder.json
// TX HighPA power override
TX20_POWER_OVERRIDE(0x003F75F5),
// The ANADIV radio parameter based on LO divider and front end settings
(uint32_t)0x01C20703,
// override_tx20_settings.json
// Set RTIM offset to 3 for high power PA
(uint32_t)0x00038783,
// Set synth mux for high power PA
(uint32_t)0x010206C3,
// Set TXRX pin to 0 in RX/TX and high impedance in idle.
HW_REG_OVERRIDE(0x60A8,0x0001),
(uint32_t)0xFFFFFFFF
};
// CMD_PROP_RADIO_DIV_SETUP_PA
// Proprietary Mode Radio Setup Command for All Frequency Bands
rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup =
{
.commandNo = 0x3807,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.modulation.modType = 0x0,
.modulation.deviation = 0xFA,
.modulation.deviationStepSz = 0x0,
.symbolRate.preScale = 0xF,
.symbolRate.rateWord = 0x28000,
.symbolRate.decimMode = 0x0,
.rxBw = 0x5B,
.preamConf.nPreamBytes = 0x4,
.preamConf.preamMode = 0x0,
.formatConf.nSwBits = 0x20,
.formatConf.bBitReversal = 0x1,
.formatConf.bMsbFirst = 0x1,
.formatConf.fecMode = 0x0,
.formatConf.whitenMode = 0x0,
.config.frontEndMode = 0x0,
.config.biasMode = 0x1,
.config.analogCfgMode = 0x0,
.config.bNoFsPowerUp = 0x0,
.config.bSynthNarrowBand = 0x0,
.txPower = 0xFFFF,
.pRegOverride = pOverrides,
.centerFreq = 0x0988,
.intFreq = 0x0800,
.loDivider = 0x00,
.pRegOverride = pOverrides,
.pRegOverrideTxStd = pOverrides_TxStd,
.pRegOverrideTx20 = pOverrides_Tx20
};
// CMD_FS
// Frequency Synthesizer Programming Command
rfc_CMD_FS_t RF_cmdFs =
{
.commandNo = 0x0803,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.frequency = 0x0988,
.fractFreq = 0x0000,
.synthConf.bTxMode = 0x0,
.synthConf.refFreq = 0x0,
.__dummy0 = 0x00,
.__dummy1 = 0x00,
.__dummy2 = 0x00,
.__dummy3 = 0x0000
};
// CMD_PROP_TX
// Proprietary Mode Transmit Command
rfc_CMD_PROP_TX_t RF_cmdPropTx =
{
.commandNo = 0x3801,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.pktConf.bFsOff = 0x0,
.pktConf.bUseCrc = 0x1,
.pktConf.bVarLen = 0x1,
.pktLen = 0x14,
.syncWord = 0x930B51DE,
.pPkt = 0
};
// CMD_PROP_RX
// Proprietary Mode Receive Command
rfc_CMD_PROP_RX_t RF_cmdPropRx =
{
.commandNo = 0x3802,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.pktConf.bFsOff = 0x0,
.pktConf.bRepeatOk = 0x0,
.pktConf.bRepeatNok = 0x0,
.pktConf.bUseCrc = 0x1,
.pktConf.bVarLen = 0x1,
.pktConf.bChkAddress = 0x0,
.pktConf.endType = 0x0,
.pktConf.filterOp = 0x0,
.rxConf.bAutoFlushIgnored = 0x0,
.rxConf.bAutoFlushCrcErr = 0x0,
.rxConf.bIncludeHdr = 0x1,
.rxConf.bIncludeCrc = 0x0,
.rxConf.bAppendRssi = 0x0,
.rxConf.bAppendTimestamp = 0x0,
.rxConf.bAppendStatus = 0x1,
.syncWord = 0x930B51DE,
.maxPktLen = 0xFF,
.address0 = 0xAA,
.address1 = 0xBB,
.endTrigger.triggerType = 0x1,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.endTime = 0x00000000,
.pQueue = 0,
.pOutput = 0
};
Regards,
Ryan