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.

[参考译文] CC2340R5:基本 BLE 待机

Guru**** 2885260 points

Other Parts Discussed in Thread: SYSCONFIG, ENERGYTRACE, CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1637034/cc2340r5-basic-ble-standby

器件型号: CC2340R5
主题中讨论的其他器件: SysConfigENERGYTRACE

我有产品固件使用此芯片上的几乎所有内容。 计时器、SPI、I2C、UART 等 我想根据蓝牙消息使 MCU 进入和退出待机模式。 消息被正确接收到具有自己事件循环的应用任务中。 任务处理所有总线和数据流、因此处理程序就在这种上下文中。 处理程序设置信标并等待暂停应用任务、理想情况下会将芯片置于待机状态。 它现在不起作用、但会继续正常运行 BLE 广播等。  

首先、简单来说、需要对 Basic BLE 示例进行哪些修改才能使其进入待机状态、例如可能需要按下按钮? 我已在 SysConfig 中添加了设置 STANDBY 的策略函数、并根据我阅读的一些内容向工程添加了预先定义的符号 POWER_SAVING。 是否有要设置/更改的项目列表、我可以关注这些项目?

使用两个事件循环、我可以想象事情会更复杂。 如何处理 Blutooth 任务?

谢谢、

Bill  

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

    嗨、Bill、

    感谢您联系我们! 这是一个很好的问题。  

    当由空闲任务调用时、开箱即用示例通常会进入待机状态。 由于器件已经自动唤醒以接收/发送 BLE 信息、因此已经实现了该功能。 如果我对这个问题有误解、请告诉我。

    至于处理 BLE 任务、需要注意一些事项。 首先、为了避免出现任何复杂问题和堆栈耗尽、BLE 堆栈应始终在工程中具有最高优先级。 此外、每当在 BLE 任务上下文之外调用 BLE 时、强烈建议使用 BLEAppUtil_invokeFunction 或 BLEAppUtil_invokeFunctionNoData API、因为它们将获取该函数并将其添加到 BLE 任务上下文中运行的队列。

    我希望这能回答您的问题、但如果您还有其他问题、请告诉我!

    此致、

    Tarek D

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

    您好 — 感谢您的回复。 我一般处理两个任务。 我想看看待机的效果。  正如我上面所说、我的应用代码在信标上一直等待、因此不应由 RTOS 进行调度。 但是、BLE 任务似乎正在运行、正在广播和接受连接。 basic_ble 示例也是如此、这就是我问它的原因。  

    在我看来,这不是待机的。 开发板不断地绘制出大约 7ma(无论何种情况)。 我希望芯片功耗很低、在中断之前不做任何事情。 我确实想保留 RAM。 我应该尝试停止广告吗? 需要更改什么才能使 BLE 任务和芯片在我想要之前不执行任何操作?  

    再次感谢您的观看

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

    嗨、Bill、

    这很奇怪、器件在广播之间通常应该会进入待机状态。 我对这种行为有几个问题:

    • 使用的广播间隔是多少?
    • 广播数据和扫描响应数据的大小是多少?
    • 在此期间是否有任何外设处于活动状态?
    • 出于好奇心、您是否注意到如果禁用广播、设备会进入待机状态?

    您描述和尝试实现的行为是绝对可能的、可能是配置错误或可能导致广播间隔过紧。

    此致、

    Tarek D

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

    尊敬的 Tarek:您希望通过未修改的 basic_ble 应用程序获得多大的电流消耗、该应用程序没有蓝牙连接且什么都不做? 我在 syscfg 中将广播设置为零、但我看不到电流有任何变化。  我尚未设置为查看当前使用情况的任何细节。 我只是使用一个在 EVK 板上运行 basic_ble 的电流表来查看 USB 电流消耗。 电流约为 22ma。 如果需要、我可以进入能量跟踪部分。  

    再说一次、真正的问题是如何以超低功耗进入待机状态、这实际上可能是我需要关闭的原因吗? 它似乎至少广告。 我该如何在代码中做到这一点? BLE 文档显示“默认情况下、  如果没有运行任务、SimpleLink 低功耗 F3 SDK 中的所有示例都将 CC23xx 或 CC27xx 置于待机模式。  “ 广告是保持该任务运行的唯一东西吗?

    谢谢

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

    我回去,开始了 basic_ble 应用程序与 energytrace ,没有它做任何事情。 Energytrace 显示持续消耗 1.25ma。 我没有看到任何进入待机模式的迹象、但 对我来说、它看起来像空闲。  

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

    您好、William、

    ble doc 显示“默认情况下、  如果没有运行任务、SimpleLink 低功耗 F3 SDK 中的所有示例都将 CC23xx 或 CC27xx 置于待机模式。  “ 广告是保持该任务运行的唯一东西吗?

    这是正确的、做出正确的更改后、将设备从待机状态唤醒的唯一事情是广播。

    未修改的 basic_ble 工程 将需要进行一些修改才能进入待机状态。 这将包括:

    • 禁用所有 LED
    • 禁用显示模块(这可以通过转至 syscfg 文件并选择 BLE -> Advanced Settings ->禁用显示模块,然后删除显示模块实例来实现)
    • 禁用所有按钮

    这样、唯一消耗功率的就是设备的实际广播。 发生这种情况时、您应该会看到设备进入待机状态、其中 3 个周期性尖峰表示在 3 个广播信道上进行广播。

    我还会说、EnergyTrace 在测量低电流时不是很准确、因此您可能想要使用功率分析仪。

    希望这对您有所帮助。

    此致、

    Tarek D  

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

    我从 syscfg 中删除了所有这些项目。 电流仍为 1.2ma。 这只是 basic_ble。 您能复制一下吗? 我不确定在哪里可以找到任何信息。  

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

    您好、William、

    我会尝试在我的最后,并回到你。 同时、您如何测量电流?

    此致、

    Tarek D

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

    我卡在 Enerytrace 中。 我认为在几毫安时就没有问题。 当我进入待机模式时、我正在寻找数量级的变化、因此我很确定它会显示这一点。  

    Bill

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

    您好 — 还有什么想法吗? 我是否应该再次要求这只是  在库存 basic_ble 未修改的情况下展示待机状态?  

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

    您好、William、

    我对延误深表歉意。 我只在 CC2340R5 上运行一些功率测量、运行一个稍作修改的 basic_ble 示例、我看到了当器件处于待机状态时平均电流消耗为 140nA、而当器件处于广播状态 (0dBm) 时平均电流消耗为 3.37mA。  

    以下是我所做的修改:

    1. 转到“RF Stacks Section -> BLE -> Advanced settings -> Disable Display Module(射频堆栈部分-> BLE ->高级设置->禁用显示模块)“
    2. 删除“TI Drivers“部分中的显示实例
    3. 删除“TI Drivers “部分中的所有 GPIO 实例
    4. 【可选】转到“射频堆栈“部分-> BLE ->无线电、将超低功耗的 Tx 功率值更改为–8dBm(默认值为 0dBm)
    5. 【可选】转到“射频栈“部分-> BLE ->广播设备配置->广播设备设置 1 ->广播参数 1、并修改较不频繁广播的最小和最大间隔值(降低总体功耗)

    希望这对您有所帮助。

    此致、

    Tarek D