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.

[参考译文] CC1310:在运行时针对 FDMA 实现对无线电进行调优

Guru**** 2487425 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1178218/cc1310-tuning-radio-at-runtime-for-fdma-implementation

器件型号:CC1310

你好!  

我非常接近于拥有基于 rfSynchronizedPacket 的可靠 FDMA 系统。  
我首先用5ms 的时隙包装 TDMA、现在我要添加 FDMA。  

我的问题是 、5毫秒的时间间隔是否太短、无法经常对这些内容进行重新调优?  
尝试在时隙之间重新调整无线电时、
我注意到、状态机似乎在4个"保存"设备和1个每50ms 重新同步一次的"主"设备之间随机锁定。  
我可以告诉它的状态机、因为其他任务正在运行、它们永远不会像没有计划数据包 RX 那样超时。  

直到我开始在每个时隙之间调用 RF_cmdF 时、才会发生这种情况。  
仅 TDMA 的解决方案已连续运行5天、没有超时。  
FDMA 解决方案是绝对的填充、在各个方向传输了数百到数千个成功数据包后、我将失去与从器件的同步。  

我还更改了在运行 RF_cmdF 后检查结果的方式。  
我被旧的 if()语句卷入陷阱,并将其更改为 while (),它不再被挂起。  

该示例中的文档使其听起来像是驱动程序重新运行此设置。 这是否包括 CmdFS? 这是仅用于 TX 还是也用于 RX?  

* Then the RF driver will power-up the RF core, re-synchronise the RAT and re-run the setup procedure.
* The setup procedure includes RF_cmdPropRadioDivSetup and RF_cmdFs_2gfsk250kbps_0 from above.

ifdef FDMA
   rf_ctx.rf_cmdfs->frequency = task.chFreq;
   rf_ctx.rf_cmdPropRadioDivSetup->centerFreq = task.chFreq; //是否需要?
   radio_set_freq (task.chFreq);
#endif


void
radio_set_freq (uint16_t f){
   rf_ctx.rf_cmdfs->frequency = f
  rf_ctx.rf_cmdPropRadioDivSetup->centerFreq = f

  // TODO 加小数

  /*设置频率。 现在、射频驱动器为射频内核加电并运行上述设置命令。
   *执行 FS 命令,并在射频驱动程序执行自动操作时缓存以供以后使用
   *加电。 *

  RF_EventMask 结果= RF_runCmd (rfHandle、(RF_OP*) RF_ctx.RF_cmdFRF_PriorityNormal、NULL、0);
  while (((result!= RF_EventLastCmdDone)&&(volatile RF_OP*) RF_ctx.RF_cmdfs)->status != DONE_OK)
  
//     while (1);
  

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

    这看起来非常相关、但我无法访问提供的论坛链接。
    e2e.ti.com/.../2442203

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

    在5ms 的速率下更改频率没有任何问题。

    如果您在间隔小于1MHz 的两个频率之间进行更改、则无需更改 setup 命令。

    如果您需要更改 setup 命令、则需要确保先关闭射频内核、然后再打开、以确保运行新的 setup 命令。

    如果射频内核已断电、无线电将始终在 RX 和 TX 之前运行 setup 命令、然后运行 fs 命令。

    在运行 RX 或 TX 之前、无需检查 CMD_FS。

    如果同步编程由于某种原因失败、RX 和 TX 命令将报告0x0809的状态(ERROR_SYNTH_PROG)。

    我觉得这个问题应该与合成有关听起来很奇怪、但建议您更仔细地研究一下时间安排。 如果您正在使用 TDMA 和 FDMA 制定同步协议、我认为在一段时间后、您可能会遇到发送器和接收器失去同步的风险。

    要进行调试、您可以在所有器件上输出 LNA (RX)和 PA (TX)信号、并在运行协议时监控这些信号。 通过这种方法、您可以在发送器处于 TX 时验证接收器是否实际处于 RX 中。 您还可以使用一些 GPIO 来指示您使用的频率、以确保您的器件不会突然以不同的频率运行。

    Siri

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

    在这个过程中、LNA/PA RX/TX 信号是绝对必要的。

    我一次跳转约2.5MHz、因此当您说"更改设置命令"时、是否指 的是 CMD_MODIFY_FS、以便在不进行校准的情况下重新设置合成器?  

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

    我的意思是、如果您在间隔小于1MHz 的两个频率之间进行更改、则只需更改即可  

    RF_cmdFs.frequency 和

    RF_cmdFs.fractFreq  

    然后再执行新的 CMD_FS

    如果更改大于1MHz、则应进行更改  

    RF_cmdPropRadioDivSetup.centerFreq。

    为了确保新的设置命令生效、 应使用 具有以下参数的 RF_CONTROL 函数: RF_CTRL_UPDATE_SETUP_CMD

    设置此控件会通知 RF 将更新 setup 命令、以便 RF 在执行下一个 setup 命令时采取适当的操作。

    注意当 RF 执行 setup 命令时、更新后的 setup 命令将在下一个上电周期生效、因此您需要在下一个 RX 或 RX 之前关闭 RF 内核(RF_Yield)。

    Siri