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.

[参考译文] CC2640R2F:BLE 传输期间每45ms 产生一次杂项功耗的来源以及降低功耗的方法

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1342953/cc2640r2f-source-of-miscellaneous-power-consumption-every-45-ms-during-ble-transmission-and-ways-to-reduce-power-consumption

器件型号:CC2640R2F

大家好、我使用的是 CC2640R2FRSMR 定制板、可以直接传输数据。

但在进行功率分析时、我发现在传输期间、我也能够每45ms 看到其他一些传输。 这是当我连接我的 Android 手机使用 BLEScanner 以及 nRFConnect 应用程序. 在使用另一部手机时、我发现这些额外信号的间隔是37秒。

下面是该功耗分析工具的屏幕截图:

此处、红色标记的传输是我每80ms 进行一次的预期数据传输、而蓝色标记的传输对我而言是未知的。 这可能用于在定制板和电话之间保持恒定的连接。 如果可以、您能否建议在哪里进行更改、以最大程度地延长连续此类传输之间的持续时间、从而节省功耗? 我已经为我的应用程序修改了 ProjectZero,所以你可能会建议更改它的文件,谢谢!

此外、您能否建议在将 MCU 与各种传感器配合使用时、可以通过哪些方法最大限度地降低功耗?
根据我的理解、MCU 默认进入低功耗模式、我还在不使用传感器时将其置于睡眠模式、但有没有其他方法可以做到这一点? 例如、有人建议删除 src 文件中未使用的 UART include。

感谢任何帮助,谢谢!

此致、

R·韦尔马

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

    您好、Ritoo、

    您能否放大意外的电流事件? 明确了解这些事件将有助于我们确定可能发生的情况。

    此致、

    1月

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

    当然、我们来看看:

    image1 (连续事件之间的持续时间= 45ms):

    图像2 (放大部分):

    此致、

    力拓

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

    我认为信号确实用于连接、请查看此处的连接签名:

    可在" 测量 CC13xx 和 CC26xx 电流消耗"的第23页找到。 其中提到"它们定期具有可配置的连接间隔、范围为7.5ms 至4s。"
    您能建议我如何更改时间间隔、继续我的原始查询、请建议降低功耗的方法。

    谢谢。此致、

    力拓

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

    您好、Ritoo、

    可以通过在连接之前选择首选连接参数或在连接期间请求更新连接参数来更改连接间隔。 以下 SimpleLink Academy 模块介绍了如何执行该操作: https://dev.ti.com/tirex/content/simplelink_academy_cc2640r2sdk_5_30_01_00/modules/blestack/ble_connections/ble_connections.html

    关于如何降低功耗、我建议在连接中禁用广播、前提是用例允许这样做。 例如、如果您一次只连接到单个器件、那么我会在连接建立时停止广播并在断开时重新启动广播。 您还可以同时增加连接间隔和广播间隔。 这将增加射频事件之间的间隔时间、从而使器件保持待机更长时间。

    您还可以降低器件的 TX 功率、因此它在射频事件期间的功耗更低。

    此致、

    1月

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

    大家好、Jan、

    我按照以下链接中所述进行了更改:

    // ******************************************************************
    // BLE Stack initialization
    // ******************************************************************
    
    // Whether to enable automatic parameter update request when a connection is
    // formed
    uint8_t enableUpdateRequest = GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS;
    
    uint16_t desiredMinInterval = 200;
    uint16_t desiredMaxInterval = 280;
    uint16_t desiredSlaveLatency = 0;
    uint16_t desiredConnTimeout = 1000;
    
    GAPRole_SetParameter(GAPROLE_PARAM_UPDATE_ENABLE, sizeof(uint8_t),
                         &enableUpdateRequest);
    
    GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t),
                         &desiredMinInterval);
    GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t),
                         &desiredMaxInterval);
    GAPRole_SetParameter(GAPROLE_SLAVE_LATENCY, sizeof(uint16_t),
                         &desiredSlaveLatency);
    GAPRole_SetParameter(GAPROLE_TIMEOUT_MULTIPLIER, sizeof(uint16_t),
                         &desiredConnTimeout);

    但是、我仍然无法看到所发生的变化。  

    此致、

    力拓

    @@@@@@@@@@@@@@@@@@@@@@@

    更新:

    @@@@@@@@@@@@@@@@@@@@@@@

    我尝试连接3个不同的手机,所有与最新的 Android 版本,结果是:

    电话 A:连接时不显示服务

    电话  B:显示连接服务并能够连接时,但连接内部值为45毫秒,即使在 CONN_interval 中进行了更改也没有更改

    电话 C:已连接并反映 CONN_interval 中所做的更改!

    那么、现在我的问题是、为什么对于定制板上的相同源代码、我会看到来自不同手机的多种行为、那么可实现一致结果的解决方案是什么?

    谢谢。此致、

    力拓

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

    您好、Ritoo、

    您可以观察到这些不同的行为、因为全部3款手机都不同、并且 BLE Stack 的实现可能不同。 确保结果一致的最简单方法是始终使用相同的模型进行测试。

    此致、

    丹桂语