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.

[参考译文] CC1311P3:LP-CC1311P3 上的大频率偏移

Guru**** 2644585 points

Other Parts Discussed in Thread: LP-CC1311P3, SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1585360/cc1311p3-large-frequency-offset-on-lp-cc1311p3

器件型号: 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Erik、

    客户是否正在 导出 SmartRF Studio 设置并使用这些生成的文件、或者他们是否使用 SysConfig(而不是使用 Studio 生成的设置文件)重新实现设置?

    如果使用 SDK 中的默认 rfCarrierWave 示例(未修改)、他们是否观察到 Studio 和 CCS 之间的偏移、还是仅在将设置修改到其首选 PHY 时观察?

    此致、

    Zack

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、感谢您指出 rfCarrierWave 示例!

    rfCarrierWave 产生的结果与 SmartRF Studio 相同。

    我们有两个基本问题。

    1. CCFG 区域未正确链接、从未从我们的代码写入闪存。

    2.在 sysconfig 中将“xoscCapArray"设置“设置为 false。 现在更改为“true"且“且“xoscCapArrayDelta"=“= 0xC1、以获得与 rfCarrierWave 示例相同的配置。

    通过这两项更改、我们现在得到与使用 SmartRF Studio 或编译 rfCarrierWave 示例时相同的频率偏移。 在我们使用 rfCarrierWave 示例进行的最后一次测量中、我们的 868MHz 目标值比~9.7kHz 或 11ppm。

    问题: 您是否能够指向所安装 XTAL 的数据表、以便我们可以将频率稳定性与 XTAL 规格进行比较? 它标有“48000 K129 Y“。  

    此致
    Erik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以在 LaunchPad 的 BOM 中找到完整的制造商器件型号