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.

[参考译文] LAUNCHXL-CC1352R1:具有 BLE 和基于 Contiki 的专有射频的 DMM

Guru**** 2482225 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1234677/launchxl-cc1352r1-dmm-with-ble-and-contiki-based-proprietary-rf

器件型号:LAUNCHXL-CC1352R1

您好!

我尝试使用 TI BLE5堆栈和定制射频堆栈来运行 DMM、由于向后兼容性的原因、这两者必须是 Contiki 射频堆栈的一个端口、如以下位置所示:

(不使用 Contiki 蓝牙堆栈)

将  TI BLE5 和 Contiki RF 与 DMM 集成(作为 BLE 堆栈和自定义 PROP 堆栈)后、当另一个"抑制"时、每个堆栈都工作:

  • 如果 BLE GPT 将所有全局优先级设置为高于 PROP、则 BLE 按预期工作、
  • 如果 PROP GPT   将所有全局优先级设置为高于 BLE、则 PROP 按预期工作。

可悲的是,情况并非如此,当这些优先级 混合时,堆栈之间必须存在一些"干扰"问题。 尽管如此、就目前而言、我尝试使用 DMM 应用程序状态 +策略功能来解决此问题、但它对我没有预期的效果。

为了简化测试、我 按如下方式设置 DMM 配置:

dmm.stackRoles                                   = ["blePeripheral","custom1"];
dmm.applicationState0                            = "DMMPOLICY_ANY";
dmm.numCustomActivities                          = 0;
dmm.policyArray[0].$name                         = "ti_dmm_policy_dmm_policy1";
dmm.policyArray[0].custom1.$name                 = "ti_dmm_policy_stack_dmm_stack_custom1";
dmm.policyArray[0].custom1.appliedActivity       = ["DMMPOLICY_APPLIED_ACTIVITY_ALL"];
dmm.policyArray[0].custom1.weight                = 10;
dmm.policyArray[0].blePeripheral.$name           = "ti_dmm_policy_stack_dmm_stack_ble1";
dmm.policyArray[0].blePeripheral.appliedActivity = ["DMMPOLICY_APPLIED_ACTIVITY_ALL"];

BLE GPT 取自 SimpleLink 示例、并设置为:

StackActivity activityBLE_bleLpropH[ACTIVITY_NUM_BLE*PRIORITY_NUM] =
{
    DMM_GLOBAL_PRIORITY(DMM_BLE_CONNECTION, DMM_StackPNormal, 70),
    DMM_GLOBAL_PRIORITY(DMM_BLE_CONNECTION, DMM_StackPHigh, 170),
    DMM_GLOBAL_PRIORITY(DMM_BLE_CONNECTION, DMM_StackPUrgent, 230),

    DMM_GLOBAL_PRIORITY(DMM_BLE_CON_EST, DMM_StackPNormal, 70),
    DMM_GLOBAL_PRIORITY(DMM_BLE_CON_EST, DMM_StackPHigh, 200),
    DMM_GLOBAL_PRIORITY(DMM_BLE_CON_EST, DMM_StackPUrgent, 220),

    DMM_GLOBAL_PRIORITY(DMM_BLE_BROADCASTING, DMM_StackPNormal, 60),
    DMM_GLOBAL_PRIORITY(DMM_BLE_BROADCASTING, DMM_StackPHigh, 160),
    DMM_GLOBAL_PRIORITY(DMM_BLE_BROADCASTING, DMM_StackPUrgent, 210),

    DMM_GLOBAL_PRIORITY(DMM_BLE_OBSERVING, DMM_StackPNormal, 60),
    DMM_GLOBAL_PRIORITY(DMM_BLE_OBSERVING, DMM_StackPHigh, 60),
    DMM_GLOBAL_PRIORITY(DMM_BLE_OBSERVING, DMM_StackPUrgent, 85),
};

PROP GPT 仅简化为一项活动:

StackActivity activityPROP_bleLpropH[ACTIVITY_NUM_PROP*PRIORITY_NUM] =
{
    DMM_GLOBAL_PRIORITY(DMM_PROP_ACTIVITY, DMM_StackPNormal, 40),
    DMM_GLOBAL_PRIORITY(DMM_PROP_ACTIVITY, DMM_StackPHigh, 40),
    DMM_GLOBAL_PRIORITY(DMM_PROP_ACTIVITY, DMM_StackPUrgent, 40),
};

根据我对 DMM 工作原理的理解、这会使 PROP 的优先级设置为40 + 10 = 50、这些优先级都低于 BLE 优先级、因此它应使 BLE 正常工作。 这就是实际发生的情况。 到目前为止、一切都很好。 然而:

  1. 当我将 策略1中的自定义1权重从10更 改为200 (PROP 现在应将所有优先级设置为240、这都高于 BLE)时、PROP 仍然不起作用、但 BLE 仍然起作用(这不是我在此类配置中所期望的)。
  2. 当我将 策略1中的自定义1权重设置为10、但将 DMM_PROP_ACTIVE 优先级从40更改为240 (PROP 具有高于 BLE 的 GPT 中定义的所有优先级)时、PROP 正常工作、但 BLE 无效(符合预期)。

所以 我认为 DMM 的工作方式不是我认为的、我的问题是:它在这里是如何实际工作的?

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

    我强烈建议您完成 DMM 的3个 SLA:

    动态多协议管理器

    我还建议您 在使用  Contiki RF 替换 prop 之前、尝试使用我们的一些默认示例以了解优先级和配置如何工作。

    如果您对其中一个默认示例进行了更改、并且有些事情不能按预期工作、那么我们可以更轻松地 在这里重现相同的行为、然后希望能够解释它为什么会像现在一样工作。

    Br

    Siri.