Other Parts Discussed in Thread: SYSCONFIG
Hi Experts,
We are using the LP-CC1311P3 and are experiencing very different frequency offsets between our code and SmartRF Studio 7. For this test we are transmitting CW at +10dBm.
When setting up the CW transmissing for 869.2125 MHz, we end up 13 kHz above the target when using Smart RF Studio 7.
When we copy the same commands (rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t, rfc_CMD_FS_t, rfc_CMD_TX_TEST_t) to our code and run it we end up 41 kHz below our target, which is not far from 50 ppm off.
Why are we experiencing this difference? Is there some offset correction we are missing? Cap array should be off for both scenarios.
For the commands we are sending in our code, please see radio_driver_tx_test_cmd below:
rfc_CMD_FS_t RF_cmdTestFs =
{
.commandNo = 0x0803,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.frequency = 0x0365,
.fractFreq = 0x3667,
.synthConf.bTxMode = 0x0,
.synthConf.refFreq = 0x0,
.__dummy0 = 0x00,
.__dummy1 = 0x00,
.__dummy2 = 0x00,
.__dummy3 = 0x0000
};
void radio_driver_fs_cmd(void)
{
tx_fs_cmd_handle = RF_postCmd(rf_tx_handle,
(RF_Op*) &RF_cmdTestFs,
RF_PriorityNormal,
NULL,
0);
core_platform_assert(RF_ALLOC_ERROR != tx_fs_cmd_handle);
}
rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdTestPropRadioDivSetup =
{
.commandNo = 0x3807,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.modulation.modType = 0x1,
.modulation.deviation = 0xA,
.modulation.deviationStepSz = 0x0,
.symbolRate.preScale = 0xF,
.symbolRate.rateWord = 0xC4A,
.symbolRate.decimMode = 0x0,
.rxBw = 0x52,
.preamConf.nPreamBytes = 0x4,
.preamConf.preamMode = 0x0,
.formatConf.nSwBits = 0x20,
.formatConf.bBitReversal = 0x0,
.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 = 0x3E92,
.pRegOverride = pOverrides,
.centerFreq = 0x0365,
.intFreq = (int16_t)0x8000,
.loDivider = 0x05,
.pRegOverrideTxStd = 0,
.pRegOverrideTx20 = 0
};
void radio_driver_pa_cmd(void)
{
rf_tx_handle = RF_open(&rfObject,
&RF_prop,
(RF_RadioSetup*) &RF_cmdTestPropRadioDivSetup,
&rfParams);
core_platform_assert(rf_tx_handle != NULL);
is_tx_handle_open = true;
}
static rfc_CMD_TX_TEST_t RF_cmdTxTest ={
.commandNo = 0x0808,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.config.bUseCw = 0x1,
.config.bFsOff = 0x1,
.config.whitenMode = 0x2,
.__dummy0 = 0x00,
.txWord = 0xFFFF,
.__dummy1 = 0x00,
.endTrigger.triggerType = 0x1,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.syncWord = 0x930B51DE,
.endTime = 0x00000000
};
void radio_driver_tx_test_cmd(void)
{
radio_driver_pa_cmd();
radio_driver_fs_cmd();
is_tx_handle_open = true;
txCmdhandle = RF_postCmd(rf_tx_handle,
(RF_Op*) &RF_cmdTxTest,
RF_PriorityNormal,
NULL,
0);
}
Regards,
Erik