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.

[参考译文] CC1352P:TDMA 的无线电命令链

Guru**** 2482225 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1201184/cc1352p-radio-command-chain-for-tdma

器件型号:CC1352P

链接/计数是否可用于实现 TDMA 网络?  

例如、TDMA 主器件 TX 是否可以在插槽0中、RX 是否可以在插槽1-n 中、然后返回到 TX?  

    if (isMaster()) {
        /* Set up the next pointers for the command chain */
        /* 1: Nop->TX (no condition) */
       rf_ctx.RF_cmdNop->startTrigger.triggerType = TRIG_ABSTIME;
       rf_ctx.RF_cmdNop->startTrigger.pastTrig = 1;
       rf_ctx.RF_cmdNop->pNextOp = (rfc_radioOp_t*)rf_ctx.RF_cmdPropTx;
       rf_ctx.RF_cmdNop->condition.rule = COND_ALWAYS;

       /* 2: TX->Branch (no condition)*/
       rf_ctx.RF_cmdPropTx->condition.rule = COND_ALWAYS;
       rf_ctx.RF_cmdPropTx->pNextOp = (rfc_radioOp_t*)rf_ctx.RF_cmdCountBranch;

       /*3: Branch->Rx (when count !=0)
        *   Branch->Tx (when count ==0) */
       rf_ctx.RF_cmdCountBranch->condition.rule = COND_SKIP_ON_FALSE;  /* If count==0 return FALSE */
       rf_ctx.RF_cmdCountBranch->pNextOp = (rfc_radioOp_t*)rf_ctx.RF_cmdPropRx;
       rf_ctx.RF_cmdCountBranch->pNextOpIfOk = (rfc_radioOp_t*)rf_ctx.RF_cmdPropTx;
       rf_ctx.RF_cmdCountBranch->counter = radio_cfg.numSlots - 1;
    }

如果可以、如何设置触发器? 在触发链式事件时、从技术上讲是否是 TRIG_NOW?  

    rf_ctx.RF_cmdPropRx->startTrigger.triggerType = TRIG_NOW; // executes 'now' in chain context?
    rf_ctx.RF_cmdPropRx->endTrigger.triggerType = TRIG_REL_START;
    rf_ctx.RF_cmdPropRx->endTime = PACKET_INTERVAL_US;

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

    尊敬的 Mike:

    在链上下文中、TRIG_NOW 意味着在上一条命令完成后将立即执行该命令。

    如果要实施 TDMA、可能需要配置 CMD_PROP_TX 和 CMD_PROP_RX 以将"结束触发器"设置为 TRIG_REL_START

    这样、您可以具有固定的持续时隙、在您使用 CMD_COUNT_BRANCH 的情况下、您可以在分支到 CMD_PROP_TX/CMD_NOP 之前分支到 CMD_PROP_RX 几次。

    此致、

    Arthur

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

    谢谢 Arthur。  

    CMD_COUNT_BRANCH 是否会像 CMD_PROP_CS 一样处理 CMD_PROP_RX?  

    我在让计数器使用 CMD_PROP_RX 时遇到问题、并认为 API 可能在 CS/RX 之间存在差异。  
    我使用上述配置。  

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

    CMD_COUNT_BRANCH 不应将它们视为不同的状态。

    我认为您不应该在 CMD_COUNT_BRANCH 上使用 COND_SKIP_ON_FALSE 规则、只能使用 COND_Always。

    实际上、因为现在它会在计数器达到0时跳过 CMD_PROP_RX。 这可能是您的问题。

    此致、

    Arthur

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

    非常有帮助的感谢。  

    " TX 前先听"方法是否适用于 TDMA 上的从器件?  
    可以使用 CMD_PROP_RX 代替 CMD_PROP_CS 吗?  

    时序和触发对我来说很有意义、但我们需要验证是否实际接收到了数据包。  
    我知道如何管理回调中的逻辑,但不是 链。  

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

    Arthur、如果我想在不停止 TDMA 插槽间的接收器的情况下、持续监听多个数据包、该怎么办?  
    这将是没有我假定的柜台。  

    我可以使用 TRIG_NEVERE 和 TRIG_COMMAND 来在帧结束时将其关闭吗?  
    当您在帧结束前接收到数据包时如何重新启动 RX? 在回调中?  

    而在主设备上、  
    链式 RX"常量"直到帧结束、然后在 TRIG_COMMAND 上立即连接 TX 很棒。  

    在从设备上、
    持续 RX 将是很棒的、直到它到达 TX (主时隙< n < numslots - 1)、然后再次连续 RX

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

    Mike:

    有一些选项可以按照您所描述的内容执行相应操作:

    • CMD_PROP_RX:bRepraakOk/BRepraakNok:启用后、允许您在正确/错误接收备份后继续 RX。
    • 收到 TRIG_COMMAND 后中止

    上述 TRM 的表15-172对此进行了说明。

    您是否尝试过使用 TRIG_COMMAND 中止 RX?=

    此致、

    Arthur

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

    谢谢 Arthur。 是的、我现在使用 TRIG_COMMAND 中止 RX。 它的工作很棒  

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

    您好、Arthur。  

    愚蠢的问题-在将 RX 与 bRepeatOk 配合使用时、我的 Rx 队列需要为每个能够接收的数据包提供1个时隙。  
    我当时想我可以一次处理这一个、因为 RF_pendCmd 在每个 RX 事件之后发生。  

    我在添加真正的队列之前遇到了一个严重的错误。  

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

    尊敬的 Mike:

    您确实需要一个实队列、您描述的内容实际上已经在 rfPacketRx 示例中实现了。

    此致、

    Arthur

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

    再次感谢 Arthur

    本主题的最后一个问题。  
    如果我想将几个不同配置的 CMD_PROP_RX 链接起来、我可以复制该结构并让它们在链中彼此指向吗?  

    例如  

    命令行函数[0]  
    CMDRX[0]
    命令行函数[1]
    CMDRX[1]

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

    您好、Mike、您确实可以这样做。

    如您所述、您可以让一个指向带有不同参数的 cmdRx2的 cmdRx1。

    此致、

    Arthur