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.

[参考译文] CC1352R:来自传感器2.4G 示例和 rfCarrierWave 示例的组合代码、用于重置 MCU

Guru**** 2581345 points
Other Parts Discussed in Thread: TIMAC, CC1352R, CC2630

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/849979/cc1352r-combined-code-from-the-sensor-2-4g-example-and-the-rfcarrierwave-example-resetting-mcu

器件型号:CC1352R
主题中讨论的其他部件:TIMACCC2630

我从 simplelink_cc13x2_26x2_sdk_3_30_00_03\examples\rtos\CC1352R1_LAUNCHXL\ti154stack\sensor_2_4g 导入传感器2.4G 示例到 IAR 8.40.1中、它构建并运行正常、可以发送/接收所需的消息。

我从 simplelink_cc13x2_26x2_sdk_3_30_00_03\examples\rtos\CC1352R1_LAUNCHXL\drivers\rfCarrierWave 导入了射频 CW 示例、并使其与 IAR IDE 一起运行、并确认它以我想要的频率在 Launchpad 板(2.4GHz)上发送 CW。

然后、我尝试通过获取简单代码(如 RF_open 调用和两个 RF_runCmd 调用以及所有结构定义、如 RF_cmdRadioSetup_ie154_0)来组合这两个项目。 对于 CW 生成、并将其添加到基于 TI 15.4 Stack 的传感器项目 中、并发现  两个项目中不存在 RF_runCmd 和 RF_open 等函数或定义不同、这会导致我的组合项目在调用 RF_runCmd ()时复位 MCU。

深入了解、我发现基于 TI 15.4 Stack 的项目使用一种基于名为 macRfDrvTblPtr 的指针的查找表、我在任何地方都找不到该指针的定义。  rf_runCmd 和 rf_open 函数(或类似函数的宏?) 需要这个指针来获取它们的 ROM 地址。  是否有人知道该指针的定义位置?  我知道它在 rf_mac_api.h 中声明为 extern、但实际赋值必须隐藏在某个库中。  我无法确定它。

最重要的是、如果有人知道如何将 CW 生成代码添加到基于 TI 15.4 Stack 的项目中、例如传感器2.4G、这将对我大有帮助!

谢谢、

Michael

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

    仅需说明一下、生成 CW 时、我可能希望通过按下按钮来执行此操作、我可能必须首先通过调用 RF_Yield ()来禁用 TI 15.4-Stack、并停止对发送和接收802.15.4消息的函数的所有调用、 我从2015年开始使用 TIMAC 堆栈完成了这一操作。  如果有人举例说明如何使用 TI 15.4-Stack 实现这一点、我会非常感激。

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

    您好、Michael、

    由于15.4堆栈将无线电保持在 MAC 之下、因此无法执行此操作。 我建议您查看我们 SDK 中的 DMM 示例、这些示例允许您将两个堆栈放在一起并执行此操作。 我们目前没有任何 EasyLink + 15.4、但我们有 BLE + 15.4以及许多其他可能对您的应用非常有用的功能。

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

    您好、AB、

    如果我调用 rf_yield ()来停止 TI_15.4-Stack 并将 CC1352R SDK 中包含的文件 RFCC26X2_MODE.c 添加到我的项目中,然后从该文件中使用 rf_open()和 rf_runCmd (),该怎么办?

    谢谢、

    Michael

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

    我已经了解了 EasyLink、BLE、15.4和 DMM。  TI 似乎不建议创建我自己的射频堆栈组合、也没有任何有关如何创建的指南。

    此外、EasyLink 没有我要查找的功能。   EasyLink_setCtrl()函数,用于启动我需要的 Tone 命令,其中有一个忙等待循环,这将阻止我发送不到10ms 的提示音。

    我认为我最可行的选择不是使用 DMM,而是寻找一种方法来禁用15.4堆栈并使用 RF_open()和 RF_runCmd ()函数或其等效项(来自专有射频堆栈?) 发送 CW 信号。

    如果能提供这方面的任何帮助,将不胜感激。

    谢谢、

    Michael

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

    您好、Michael、

    射频良率可能起作用。 我没有尝试过这种方法。

    另一种选择是继续并完全停止网络、进行单独的射频传输、然后重新启动网络。

    此致、

    AB

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

    您好、AB、

    您能否澄清一下"完全停止网络"是什么意思?  您是指 RF_Yield ()函数调用还是其他内容?

    另外、您是否知道在启动 TI 15.4-Stack 之前为何无法发送 CW 音调?  我的项目中似乎没有连接正确的射频库,我无法确定需要使用哪个库来调用 RF_open()和 RF_runCmd ()。

    谢谢、

    Michael

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

    此外,如果我想尝试使用 RF_Yield ()调用,我是否需要使用 RF_OPEN ()调用创建新的射频驱动程序句柄,或者是否应该尝试从15.4-Stack 中重新使用现有的射频驱动程序句柄?  如果答案是后者、那么如何获取15.4-Stack 驱动程序句柄?

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

    Michael、

    RF_Yield ()将使射频内核进入睡眠状态,这就是此 API 的用途。 它不会停止来自15.4 Stack 的操作、并会在15.4 MAC 尝试使用无线电执行其他操作时导致问题。

    话虽如此、您说过您能够使用 TIMAC 完成这一操作? 底层 MAC 基本上是 TIMAC、您是否曾尝试过对 TIMAC 执行过什么操作?

    您能否进一步解释一下您为什么需要 CW、它的用途是什么、我可以帮助您找到一种方法来实现这一目标?

    我之所以提供 DMM、是因为它提供了一个调度射频呼叫的中间件。 您也可以通过使用重量更轻的 DMM ish 类型应用来执行类似的操作(我不建议使用此路由、因为它将涉及大量开发工作)、该应用可以通过控制对讲机用途的方式来管理射频呼叫。

    此致、

    AB

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

    您好、AB、

    我之前在基于 CC2630的项目中使用2015年发布的 TIMAC。  我们将2.4GHz 的802.15.4用于数据通信、并将2.4GHz 的 CW 音调用作"定位器"信号、以定位我们专有技术的无线电。  该信号需要持续约500us、我们可以使用 CC2630 MCU 实现这一点。  我们还 能够使用"yield (产量)"命令暂停 TIMAC、发送 CW 音调信号、然后使用"Resume"命令恢复 TIMAC 堆栈。  虽然不是很可靠、但看起来工作正常。  我们用来发送 CW 音调 的 API 函数是 MB_SendCommand()。

    现在、我们将使用基于"15.4-Stack"的新软件堆栈转换到 CC1352R、据我了解、它包含 TIMAC 2.0作为底层。  我不确定 MB_SendCommand()函数发生了什么情况,但它似乎不再可用。

    我目前正在尝试执行以下操作:

    Mac_YieldReq();
    
    //请求访问无线电*/
    rfHandle = RF_open (&rfObject、&RF_prop_ie154_0、(RRF_cmdSetup*)&RF_RadioSetup_ie154_0、&rfParams);
    
    //发送 CMD_FS 并等待,直到它完成*RF_RadioSetup_ie154_0*
    、IeRF_rfprue_Handle_0*、rf_rf4 (nLf)、rf_rf_rf_rf_rere0*
    
    /*发送 CMD_TX_TEST、该器件会永久发送*/
    RF_runCmd (rfHandle、(RF_OP*)&RF_cmdTxTest_ie154_0、RF_PriorityNormal、NULL、0); 

    为了使 RF_open ()/RF_runCmd ()函 数正常工作、最终从 SDK 借用文件 C:\ti\simplelink_cc13x2_26x2_sdk_3_30_00_03\source\ti\drivers\RF\RFCC26X2_multime.c 并将其链接到我的项目。

    我还从 rfCarrierWave SDK 示例中借用了 RF_cmdRadioSetup_ie154_0等结构、之后我将其修改为在2.4GHz 下运行。

    这似乎可以启动 CW 音调。  我不确定是否能够停止并正确恢复15.4-Stack。  我需要一些帮助来了解15.4-Stack 在 yield 调用后的作用、如何在运行 RF_open ()/RF_runCmd ()函数时防止与它发生冲突、以及如何在我完成最后一个 RF_runCmd ()调用后正确恢复它。

    非常感谢您的帮助!

    Michael