Other Parts Discussed in Thread: LP-CC1311P3, SYSCONFIG
器件型号: CC1311P3
主题: SysConfig 中讨论的其他器件
尊敬的专家:
我们使用 LP-CC1311P3、并且我们的代码和 SmartRF Studio 7 之间的频率偏移量差异很大。 对于此测试、我们以+10dBm 的频率发送 CW。
在为 869.2125MHz 设置 CW 发送时、使用 Smart RF Studio 7 时、我们最终会比目标高 13kHz。
当我们将相同的命令 (RFC_CMD_PROP_RADIO_DIV_SETUP_PA_t、RFC_CMD_FS_t、RFC_CMD_TX_TEST_t) 复制到我们的代码中并运行它时、我们最终会比目标低 41kHz、这离 50ppm 不远。
为什么我们会遇到这种差异? 我们是否缺少了一些偏移校正? 在这两种情况下、电容器阵列都应关闭。
有关我们在代码中发送的命令、请参阅下面的 radio_driver_tx_test_cmd:
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);
}
此致、
Erik