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-CC2640R2:了解"实际"功耗

Guru**** 1812430 points
Other Parts Discussed in Thread: CC1310, SYSBIOS, ENERGYTRACE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1241333/launchxl-cc2640r2-making-sense-of-real-power-usage

器件型号:LAUNCHXL-CC2640R2
主题中讨论的其他器件:CC1310SYSBIOSENERGYTRACE

如 SWRA578B 文档中所述、在使 CC1310 &CC2640R2以"实际"低功耗模式运行时、通常会出现电源问题。

我们遇到的问题是、当不设置"power_saving" 编译器 predef 标志时、测试似乎是一致的、当我们设置时只是奇怪。

我们正在尝试为这两款器件构建简单的传感器信标、但我们现在只看 BLE。

在禁用 power_saving 的情况下、我们的简单信标发射功率峰值似乎正确、空闲电流正常。

但当我们启用 power_saving 时没有意义。

我们回去创建一个仅启动 TI-RTOS BIOS 而不执行其他操作的简单应用、我们看到了同样的非凡性能。

理念是逐位构建信标应用、确保可预测的功耗。

下面是功率图。

8mA+峰值来自哪里?

调试器在测试时分离、但在我们进行调试时、它显示器件处于深度睡眠模式、本标准的下面步骤6 PowerCC26XX_STANDBYPolicy

  /* 3. 始终在空闲状态下保持高速缓存保持开启 */
   PRCMCacheRetentionEnable()
   /* 4. 关闭 CPU 电源域*/
   PRCMPowerDomainOff (PRCM_DOMAIN_CPU);
   /* 5. 确保所有可能的未完成 AON 写入完成*/
   SysCtrlAonSync()

   /* 6. 输入 IDLE */
    PRCMDeepSleep ();

   /* 7. 确保唤醒后 MCU 和 AON 处于同步状态*/
   SysCtrlAonUpdate()

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

    加载驱动程序/空项目会产生以下功耗。

    我假设射频内核已关闭?

    在底部、您可以看到红色 LED 线正在用跳线切换、跳线显然已移除。

    我假设一个计时器在休眠1秒后一直在运行、但功率"尖峰"似乎过大?

    结果看起来与打开帖子中的结果相同。

    所有这些都没有任何意义、因为。  

    ULP Advisor 提供以下输出:

    说明资源路径位置
    #10371-D (ULP 1.1)检测到未使用低功耗模式状态更改指令 empty_CC2640R2_LAUNCHXL_tirtos_ccs

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

    大家好、Jan、

    我建议您参考这份文档。

    https://www.ti.com/lit/an/swra478d/swra478d.pdf

    此外、需要始终设置 power_saving 符号。

    如果您已正确地将简单外设等示例程序修改为信标模式、则在 TX 功率设置为0dBm 的情况下、您应该会看到通告峰值电流约为7mA

    -克尔

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

    感谢马克尔

    我没有提到这份文件,但我也有这份文件。

    我正在测试的项目是库存标准、并且设置了 power_saving。

    我的问题是、我没有看到这些文档所示的预期行为、这是我的问题。

    我试着去模仿那些结果。

    我正在使用 Nordic Power profiler II、我们在 ST-WB55、ST-BlueNRG 和 ESP32上使用该产品。

    它们都有按预期工作的奇怪信号、例如在 BlueNRG 上、如果未配置、它就是看门狗、则会导致问题。

    我可以看到 BLE 广播电流尖峰、但正如这些文档所示、我尝试处理许多其他意外行为。

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

    更多测试...

    根据 SysBIOS 示例创建了一个新的 TI-RTOS 工程、并且仅实施4个 I/O 线路进行测试。

    main 仅配置电源、引脚和 BIOS_start(),这就是它的全部功能。

    我复制了一份股票标准  PowerCC26XX_STANDBYPolicy -> PowerCC26XX_customPolicy

    并添加了、以便在 I/O 线路进入该状态进行调试时使其变为低电平:

    1.输入策略

    2.深度睡眠

    3.睡眠

    4. power_sleep (Power_Standby)

    本质上、这些是此例程中处理器将睡眠的重要步骤。

    下面是我的结果图

    这只是启动后的前100ms、您可以看到该例程是如何工作的。

    所有这一切都是预料之中的、尽管电流消耗很高、但至少要加以说明。

    不睡眠时会出现功率峰值、流耗看起来符合预期。

    通过较低的 I/O、我们可以了解到处理器已进入  POWER_SLEEP (PowerCC26XX_STANDBY);

    因此、处理器一直处于此状态、然后我看到8mA+快速峰值是无法解释的情况。

    我猜这一定是未配置的对讲机?

    我曾尝试明确禁用广播、但电流峰值是相同的。

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

    大家好、Jan、

    我建议您只使用 launchpad 进行测试、而不使用传感器连接它。 还要移除所有跳线。 您应该在电流消耗分析器中看到类似这样的结果。 在相邻通告之间、应该有一个直流/直流再充电脉冲。  

    单击图片以放大。

    -克尔

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

    再次感谢 Markel 的帮助!

    我已订购支持 EnergyTrace 的新套件、但 CC2640R2和 CC1310不具备该功能。

    即将推出适用于 CC2642和 CC1312的新套件、我们在这些文档中使用了这些套件进行测试。

    但为了补充一点、我现在甚至没有配置任何 BLE。

    是的、所有东西都从电路板上移除了、我将通过功耗分析器从2个 AA 电池组供电。

    除此之外、只是启动套件和所有跳线都关闭。

    但我们可以在最终产品上看到相同的结果。

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

    根据 SysBIOS 示例创建了一个新的 TI-RTOS 工程、并且仅实施4个 I/O 线路进行测试。

    main 仅配置电源、引脚和 BIOS_start(),这就是它的全部功能。

    [/报价]

    我建议您使用简单外设等 BLE 示例程序进行测试。 在加电后、将广播简单外设、但程序未针对低功耗进行优化、因此预计基极电流消耗会更高。

    在 simple peripheral 中,您无需更改 main()中的任何内容。 只需记住、基础电流消耗中增加的是外部外设、开放式 UART 和 XDS110电路。

    -克尔

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

    这是我的项目开始的地方、一切都在未定义 power_saving 的情况下运行。

    我的应用已经在使用可触发主 CPU 的传感器控制器应用、但我要尝试在空闲时实现<30uA。

    信标在每个传感器控制器通知上广播2倍、并且运行状况良好。

    因此、不使用 power_saving 时功率峰值是正确的、但空闲电流约为600到800uA。

    一旦我启用 power_saving、将中断、并开始未定义的行为。

    我将尝试从基本的应用部分着手、了解出了什么问题以及如何解决。

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

    我的结论是、处理器位于 Powercc26CC.c 内的 Power_sleep 例程中、然后是要调试的下一部分。

    从我的 I/O 调试中、我可以看到它永远位于该例程中。

    即没有为调试输出跟踪配置 UART。

    我将再次提取该函数并实施测试版本。

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

    还不错……

    唯一的功耗依赖性是、

    if (Power_getDependencyCount (PowerCC26XX_DOMAIN_Periph)){
      poweredDomains |= PRCM_DOMAIN_Periph;

    不确定那是什么,但处理器运行到 PRCMDeepSleep ()

    然后邪恶开始了。

    就我而言、它看起来像是一个器件故障。

    我将等待我的新套件、并在不同的 MCU 上进行测试、但除非我有新的想法、否则这些测试现在就结束了。

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

    我们的本地 FAE 对此进行了提问、让我们用图表可以准确地反映出问题所在。

    仔细观察、你在600-800uA 的速度下处于闲置状态、这与我启动该线程之前得到的结果相同。

    当您从示例创建新工程时、 power_saving 不定义、请查看"Arm Compiler Settings -> Predefined Symbols -> Undefine "

    如果您将其取出并重新运行、则将得到我得到的结果。

    您永远不会进入全断电模式。

    请看我的上一篇文章,我找到了这方面的解释。

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

    经过大量搜索和测试、我找到了有关深度睡眠模式下电流脉冲的解释。

    我实施了自己的 电源策略 电源睡眠 调试问题。

    并知道它必须处于电源睡眠状态。

    首先尝试强制所有电源域、例如射频内核、但这不是问题。

    问题或更确切地说这种现象归因于 uLDO。

    Power_sleep 函数中的具体此行:

    /* 9. 待机期间请求 uLDO */
    PRCMMcuUldoConfigure (TRUE);

    如果您取出该应用、则该应用将在600-800uA 的空闲状态下运行。

    将其置于空闲电流小于30uA 且电流峰值为8-16mA。

    因此我假设这些是再充电脉冲。

    对于电池应用、您需要了解如何实现"储罐电容器"设置、以使其更远的透视效果更好。

    我感到惊讶的是、所有参考文档都没有提及这一点。

    峰值似乎比我预期的要多得多。