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.

[参考译文] CC2652P:如何调整射频测试中的频率偏移?

Guru**** 2589265 points
Other Parts Discussed in Thread: CC2652P, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/987583/cc2652p-how-to-adjust-the-frequency-offset-in-rf-test

器件型号:CC2652P
Thread 中讨论的其他器件:SysConfig

我正在使用射频演示、例如 rfpacketttx、rfpacketterrorrate、rfcarrierwave。
当我需要修改频率时、我可以使用 RFFC_ CMD_ FS_ t。、但当我需要修改频率偏移时、我需要做什么?
1、struct RFFC_ CMD_FS_ t ->fractFreq?
2、struct RFFC_ CMD_ update_ hPOSC_ FREQ_ t -> freqOffset?

#define CMD_FS 0x0803
//! 频率合成器编程命令
struct __RFC_struct RFC_CMD_FS_s{
uint16_t 命令编号;//!<命令 ID 编号0x0803
uint16_t status;//!<\brief 是一个整数,指示命令的状态。 该值是
//!<在运行期间由无线电 CPU 更新,并可由读取
//!<系统 CPU。
RFC_radioOP_t *pNextOp;//!<此操作完成后,指向要运行的下一个操作的指针
ratmr_t StartTime;//!<绝对或相对开始时间(取决于 startTrigger 的值)
结构{
uint8_t 触发器类型:4;//!<触发器类型
uint8_t bEnaCmd:1;//!<\brief 0:无备用触发命令

//!< 1:CMD_TRIGGER 可用作备用触发器
uint8_t 触发器编号:2;//!<触发此操作的 CMD_TRIGGER 命令的触发器编号
uint8_t pastrig:1;//!<\brief 0:不会触发过去的触发器,或者对于命令启动,会给出错误消息

//!< 1:过去的触发器会尽快触发
} startTrigger;//!<启动操作的触发器的标识
结构{
uint8_t 规则:4;//!<运行下一个命令的条件:如何继续的规则
uint8_t nSkip:4;//!<如果规则涉及跳过、则跳过次数+ 1。 0:相同,1:下一个,2:跳下一个,...
}条件;
uint16_t 频率;//!<要调谐到的频率、以 MHz 为单位
uint16_t fractFreq;//!<要调谐到的频率的分数部分
结构{
uint8_t bTxMode:1;//!<\brief 0:在 RX 模式下开始同步

//!< 1:在 TX 模式中开始同步
uint8_t refFreq:6;//!<\brief 0:使用默认参考频率

//!<其他:使用参考频率48MHz/refFreq
} synthConf;
uint8_t __dummy0;//!<保留,始终写入0
uint8_t __dummy1;//!<保留
uint8_t __dummy2;//!<保留
uint16_t __dummy3;//!<保留
}__RFC_struct_attr;

#define CMD_UPDATE_HPOSC_FREQ 0x0608
//! 为 HPOSC 设置新的频率偏移
struct __RFC_struct RFC_CMD_UPDATE_HPOSC_FREQ_s{
uint16_t 命令编号;//!<命令 ID 编号0x0608
int16_t freqOffset;//!<相对频率偏移、有符号、按2-22缩放
}__RFC_struct_attr;

谢谢~

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

    您好!

    请参阅此链接 https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz/f/sub-1-ghz-forum/820991/cc1312r-frequency-offset-read

    此致

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

    你(们)好

    我阅读了该链接的内容并了解了如何读取偏移量。
    RFC_CMD_UPDATE_HPOSC_FREQ_s 是否用于设置偏移?

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

    您好!  

    我迫切需要知道如何调用 API 来设置频率偏移。

    谢谢~

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

    器件型号:CC2652P

    我看到此链接 https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz/f/sub-1-ghz-forum/820991/cc1312r-frequency-offset-read;

    这可能有助于我读取频率偏移、但如何写入?

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

    您好!

    原始问题中提到的频率偏移与传入数据包相关的信息、如 LQI/RSSI 和时间戳。  这不是您要写入的值。  您是否在询问如何在运行时更改工作频率?  请参阅 射频库 API

    此致、
    Ryan

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

    根据驱动程序库文档、看起来是正确的。

    就个人而言、我建议通过在 SysConfig 工具中修改 XOSC 电容阵列增量来设置频率偏移。

    如果您不使用 SysConfig、我建议您通过 SmartRF Studio 生成射频设置、如图所示。

    然后、您可以将它们导入到您的项目中、以便它从头开始工作。

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

    目前、我们使用 rftx (rfPacketTx)和 rfper (rfPacketErrorRate)、但我们没有发现任何问题。

    但是、我们使用 CWM 仪器来观察载波传输。 在载波传输开始后、仪器仅接收到一个短信号(可能是一个帧)、然后不再存在。


    我想问如何解决载波传输问题。 这是我们的代码、类似于演示。(rfCarrierWave)

    rf_handle rfCwHandle;
    RF_Object rfCwObject;

    rf_params rfParams;
    rf_params_init (&rfParams);

    RF_ScheduleCmd 参数调度程序参数;
    rf_ScheduleCmdParams_init (&scheduleParams);

    scheduleParams.StartTime = 0;
    scheduleParams.StartType = RF_StartNotSpecified;
    scheduleParams.allowDelay = rf_AllowDelayAny;
    scheduleParams.duration =~(0);// CMD_FS 将运行直到完成
    scheduleParams.EndTime =~(0);// CMD_FS 将运行直到完成
    scheduleParams.endType = rf_EndNotSpecified;

    rf_cmdTxTest.config.bUseCw = 1;

    rfCwHandle = RF_OPEN (&rfCwObject、&RF_PROP_2_4G_FSK_250kbps_t、(RF_RadioSetup*)&RF_cmdPropDivSetup_2_4G_FSK_250kbps_t、&rfParams);

    /*发送 CMD_FS 并等待其完成*/
    RF_cmdFs_2_4G_fsk_250kbps_t.frequency = config->frequencyTable[config->frequency].frequency;
    RF_cmdFs_2_4G_fsk_250kbps_t.fractFreq = config->frequencyTable[config->frequency].fractFreq;
    rf_runScheduleCmd (rfCwHandle、(rf_Op*)&rf_cmdfs_2_4G_FSK_250kbps_t、&scheduleParams、NULL、0);

    //发送永远发送的 CMD_TX_TEST */
    rf_runScheduleCmd (rfCwHandle、(rf_Op*)&rf_cmdTxTest、&scheduleParams、NULL、0);

    谢谢~

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

    您好 Mingwei、

    我要将其转移给软件团队处理。 他们将能够调试您的代码并进一步为您提供帮助。

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

    您好 Mingwei、

    您能否告诉我们您正尝试实现什么目标、以及为什么需要在运行时更改晶体频率偏移?

    此致、
    Ryan

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

    您好、Ryan、


    考虑到硬件的差异、我们需要在工厂检查期间测试和校准射频(测试传输、每次测试、频率偏移等)。 对于频率偏移、必须在设备运行期间设置频率偏移、并且必须固化并存储设定值。

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

    您好 Mingwei、

    一旦您为单个设计找到合适的偏移、其他器件应该相对相同、在~4ppm 内。 如果是大规模生产的器件、则不应发现每个相同的器件都需要不同的偏移来正确配置。 是这样吗?

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

    您好 Nathan

    也就是说、使用相同的固件和硬件、可以保证频率偏移在4ppm 范围内、对吧?


    目前、通过 API 设置和保存频率偏移将用于 PCBA 测试阶段。 测试仪将通过软件接口更改频率偏移、以便调整硬件方案。

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

    您好 Nathan

    如前所述、载波传输是否有任何进展?

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

    您好、Ryan

    我尝试使用 API 更改频率偏移、但它不起作用。还尝试重新启动。

    /***

    μ@代码

    ****/

    #define CMD_UPDATE_HPOSC_FREQ 0x0608
    //! 为 HPOSC 设置新的频率偏移
    struct __RFC_struct RFC_CMD_UPDATE_HPOSC_FREQ_s{
    uint16_t 命令编号;//!<命令 ID 编号0x0608
    int16_t freqOffset;//!<相对频率偏移、有符号、按2-22缩放
    }__RFC_struct_attr;

    RFC_CMD_UPDATE_HPOSC_FREQ_t RF_cmdFs_FreqOffset_t =  

    .commandNo = 0x0608

    freqOffset=0

    };

    RF_cmdFs_FreqOffset_t.freqOffset = xxx;

    rf_runScheduleCmd (rfHandle、(rf_Op*)&rf_cmdfs_FreqOffset_t、&scheduleParams、NULL、0);

    //或   

    // RF_cmdFs_2_4G_fsk_250kbps_t.frequency = 2405;
    // RF_cmdFs_2_4G_fsk_250kbps_t.fractFreq = 0;
    // rf_runScheduleCmd (rfHandle、(rf_Op*)&rf_cmdfs_2_4G_FSK_250kbps_t、&scheduleParams、NULL、0);

    // RF_cmdFs_FreqOffset_t.freqOffset = xxx;
    // rf_scheduleCmd (rfHandle、(rf_Op*)&rf_cmdfs_FreqOffset_t、&scheduleParams、NULL、0);

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

    您好 Mingwei、

    您如何知道 API 不起作用、以及是否尝试过 RF_runCmd API?  电容阵列通过 CCFG 进行调整、请参阅 https://www.ti.com/lit/swra640的第6.4节

    还有一个 rfCarrierWave 示例可供参考。   https://dev.ti.com/tirex/explore/node?node=ALoHpX61MXWw9A3RCBU6kQ__pTTHBmu__LATEST 

    请查看 rf_scheduleCmd 参数并进行调试、以确定默认示例中的哪些修改会破坏代码。

    此致、
    Ryan