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.

[参考译文] RTOS/CC1310:RF 资源互斥问题

Guru**** 2552050 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/794264/rtos-cc1310-rf-resource-mutual-exclusion-problem

器件型号:CC1310

工具/软件:TI-RTOS

您好,团队

因为我的问题非常焦虑,而且上一篇文章的员工不得不离开办公室,所以我问了一个相关的问题。我有两个任务,所有这些任务都可以访问射频内核并执行命令。 一个任务是 WOR-RX 任务、一个任务是串行端口设置任务、它假定工作频率已设置。 为了避免资源使用冲突、我使用了信标来保护。 下面是我的代码逻辑、但它不会产生我想要的结果。当我在串行端口任务中无法获取信标时、我认为 RF 内核已经被占用、因此我立即执行了 DELETE 命令。 当我第一次设置频率时、STATUS = 0x83、然后设置 STATUS = 0x04。 请帮助!

/* WOR-RX 任务优先级=2*/
while (1)
{
/*获取对资源的访问*/
Semaphore_pend (semHandle、BIOS_wait_forever);

/*设置未来的下一次唤醒时间*/RF_cmdPropRxSniff.StartTime
+= WOR_WAKE_UP_INTERVE_RAT_RAT_TICKs (500ms);

/*计划 RX */rxCmdhandle
= RF_postCmd (rfHandle、(RF_OP*)&RF_cmdPropRxHeff、RF_PriorityDr、RF_EventEntry1、RF_Entry1、RF_Entry1);
rf_pendCmd (rfHandle、rxCmdhandle、0);

//解锁资源*/
Semaphore_post (semHandle);
}

/* UART 任务优先级=4*/
while (1)
{
set Frequency instruction;
……
if (semaphore_pend (semHandle、0)= false)
{
//if (!EasyLink_CmdHandle_IsValid (rxCmdhandle))返回 false;
RF_Stat 状态= RF_CancelCmd (rfHandle、rxCmdhandle、1);
UART_WRITE (uartHandle、STATUS、1);
//if (status!= RF_StatusSuccessess)返回 false;
}
…
} 

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

    您似乎对代码有多个问题。 您已提到频率设置命令的状态。 此命令在何处执行、如何读取状态代码(调试器的快照将有所帮助)? 您的代码中似乎有2个 while (1)循环。 您能解释一下您要实现的逻辑吗?

    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 SVS:
    这是两个任务、我仅提取了内部的无限循环代码。 我没有显示用于设置频率的命令。 我主要强调执行 RF_cmdcancel 的结果。我对问题的描述在您面前、您可以仔细查看。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    也许根据此处(第111页)的示例4-4来制定任务(UART 和 WOR-RX 任务)的执行: www.ti.com/.../spruex3t.pdf 将有所帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Fi,
    这个部分主要由信标使用、我的也是。 这种方法不能很好地解决我的问题。 如果我的唤醒时间设置为10秒一次、那么我必须等待很长时间、这是不合理的。 我想要的是立即清除当前占用射频内核的命令、以便它们可以执行我想要的命令。任何想法?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    X 您好、

    我在这里看不到问题、您是否了解了接收到的返回值的含义?

    "RF_StatusSuccessess (0x83) ////<成功完成功能。" -这意味着您已按预期成功取消命令。

    "RF_STATUSCmdEned、(0x04) ///<在池中找到 Cmd、但已结束。" -这意味着您尝试取消不再在队列中的命令。 换言之、它已经完成、没有任何点取消它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、M-W,
    如果是这样、则无需担心。 如何验证频率修改是否成功? 我从433MHz 更改为433.5MHz、并且两个板可能可以正常通信。 这种方法似乎无法判断。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    X 您好、

    您需要检查 FS 命令的状态、以查看其是否成功完成。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好,感谢您的支持 M-W!