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.

[参考译文] 关于:CC2652R:定制802.15.4帧 TX 和 RX

Guru**** 2455560 points
Other Parts Discussed in Thread: CC2652R

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1053084/re-cc2652r-custom-802-15-4-frame-tx-and-rx

主题中讨论的其他器件:CC2652R

AB、

另一个问题。  是否有使用802.15.4无线电命令执行 CSMA-CA 操作的示例?  

我知道需要在后台运行能量检测。  当我将 ED_scan 放入我的命令链(使用下一个指针)时、看起来它没有在后台运行。  是否有特殊的方法可以将 ED_scan 命令发送到对讲机、使其在后台运行?

我正在使用 RF_postCmd()发送命令。  我已尝试在命令链之前自行发送 ED_scan、并尝试将 ED_scan 放入命令链中。  这两种方式似乎都阻碍了对讲机的运行、并且不会处理更多命令。   

谢谢、

Nathan

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

    您好、Nathan、

    我将这个问题拆分为另一个主题、因为它是一个不同的问题。

    简而言之、我们没有您可以访问的示例、我们正在进行此操作。

    但我可以向您介绍使其正常工作的步骤。

    您需要做的第一件事是在 RX 模式下打开无线电(它不需要执行 ED 扫描、但如果需要、您可以执行此操作)。 为此、我建议您使用所需的设置创建 RXcmd、并使用调度 API 执行命令:

    rxCmdHandle = RF_scheduleCmd(RF_handle, (RF_Op*)&RF_cmdIEEERx,
                                     &rxParam, macRxCb, evtMask);

    执行此操作后、继续并准备 CSMA 和 TX 命令:

        /* Change CSMA Params */
        RF_cmdIEEECsma.randomState                = 0;
        RF_cmdIEEECsma.macMaxBE                   = maxBe;          //based on your requiremetns
        RF_cmdIEEECsma.macMaxCSMABackoffs         = csmaBackoffs;   //based on your requiremetns
        RF_cmdIEEECsma.csmaConfig.bSlotted        = 0;
        RF_cmdIEEECsma.csmaConfig.initCW          = 1;
        RF_cmdIEEECsma.csmaConfig.rxOffMode       = 0;
        RF_cmdIEEECsma.NB                         = 0;
        RF_cmdIEEECsma.BE                         = txBe;           //based on your requiremetns
        RF_cmdIEEECsma.remainingPeriods           = 0;
        RF_cmdIEEECsma.status = IDLE;
        RF_cmdIEEECsma.pNextOp = (rfc_radioOp_t *)&RF_cmdIEEETx;
        RF_cmdIEEECsma.condition.rule = COND_STOP_ON_FALSE;
        RF_cmdIEEECsma.startTrigger.triggerType = TRIG_NOW;
        RF_cmdIEEECsma.endTrigger.triggerType = TRIG_REL_START;
        
        /* Post TX command */
        RF_cmdIEEETx.status = IDLE;
        RF_cmdIEEETx.pNextOp = NULL;
        RF_cmdIEEETx.condition.rule = COND_NEVER;
        RF_cmdIEEETx.pPayload = p;                                  //p = payload pointer
        
        /* Create a NOP command */
        rfc_CMD_NOP_t RF_cmdNopFg =
        {
            .commandNo = 0x0C01,
            .status = 0x0000,
            .pNextOp = (rfc_radioOp_t *)&RF_cmdIEEECsma,
            .startTime = 0x00000000,
            .startTrigger.triggerType = 0x0,
            .startTrigger.bEnaCmd = 0x0,
            .startTrigger.triggerNo = 0x0,
            .startTrigger.pastTrig = 0x1,
            .condition.rule = COND_ALWAYS,
            .condition.nSkip = 0x0,
        };
        
        txCmdHandle = RF_scheduleCmd(RF_handle, (RF_Op*)&RF_cmdNopFg,
                                       &txParam,macRadioCsmaTxCb,
                                       RF_EventLastFGCmdDone);

    尝试一下、它应该起作用。

    AB

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

    AB、

    我在使其正常工作方面遇到了困难。  这是我观察到的情况。  

    我可以正常启动 RX/ED_scan (看起来)。  对于下一个命令链、如果我从 NOP 开始、使用 pNextOp A TX (忽略 CSMA)、无线电将不传输。

    但是、如果我在第二次调用 RF_scheduleCmd ()时仅安排 TX (忽略 NOP)、我可以在 ED_scan 运行时正常传输。

    如果我不启动 ED_scan、我可以成功使用 NOP->TX 链(以及其他链接命令、如 CountAndBranch)。   

    我注意到您对 NOP 使用命令编号0xC01、但我查看的文档(CC2652R 用户指南- SWCU185D)仅显示对 NOP 使用0x801。  当 ED_scan 在后台运行时、我可能需要在命令链中使用其他命令 No?

    谢谢、

    Nathan

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

    您好、Nathan、

    这是一个很好的观察结果。 首先,让我谈谈命令问题。 您在技术参考指南(0x801)上看到的命令是常见的无线电 CMD、它们与我们使用的 IEEE Cmd 不同。 请记住、如果在对讲机运行 IEEE 命令时尝试调度非 IEEE 命令、可能会遇到问题。 不过、您可以将它们(我是如何向您展示的)连接起来以避免这种情况。

    您正在阅读的用户指南 第25.5节 IEEE 802.15.4对此进行了说明。

    命令编号0x0C01实际上不是 NOP、而是即时调度命令、因此、我认为出于此示例的目的、我们可以忽略此命令并调度 TX、RX 和 ED_Scans、而无需链接"NOP"

    在不起作用的情况下、您能否在调试模式下运行它并查看执行到对讲机的命令的状态?

    根据 同一文档的表25-81、您应该能够使用 TX 命令执行 EDSCAN 和/或 RX 命令、而不会出现任何问题。

    此致、

    AB