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:API 在不使用时完全关闭 BLE 无线电、并在需要时打开 BLE 无线电

Guru**** 2589300 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1368727/cc2340r5-api-to-completely-switch-off-the-ble-radio-when-not-in-use-and-switch-on-ble-radio-whenever-it-is-required

器件型号:CC2340R5

工具与软件:

我希望这条消息能让您满意、我们需要您的意见。  

我们的用例要求每90秒传输一次 BLE 广播数据包、我们希望通过在不使用的 BLE 无线电时完全关闭来节省功耗。

是否有 API 来执行此操作? 理想情况下、我们应在90秒持续时间前几秒开启 BLE 无线电、对传感器数据进行采样、并通过 BLE 广播包进行传输。

如果可能、您能否为我们提供一个 API 调用和伪代码列表来实现这一点?

关于

伊兰切智安  

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

    尊敬的 Ilanchezhian:

    感谢您与我们联系。 如果设备未连接或正在进行广播、则无线电将自动关闭、不会消耗功率。 我建议您  在准备好传输数据时只需调用 GapAdv_enable (或 BLEAppUtil_advStart ()),然后 在传输数据后调用 GapAdv_disable ()(或 BLEAppUtil_advStop ())。 要在发送单个广播后禁用广播、我建议将 BLEAPPUTIL_ADV_END 事件掩码添加到广播 AdvHandler.EventMask 中。 如下所示:

    BLEAppUtil_EventHandler_t broadcasterAdvHandler =
    {
        .handlerType    = BLEAPPUTIL_GAP_ADV_TYPE,
        .pEventHandler  = Broadcaster_AdvEventHandler,
        .eventMask      = BLEAPPUTIL_ADV_START_AFTER_ENABLE |
                          BLEAPPUTIL_ADV_END_AFTER_DISABLE |
                          BLEAPPUTIL_ADV_END
    };

    然后、您可以将 BLEAPPUTIL_ADV_END 案例添加到 Broadcaster_Adv 处理程序中、如下所示:

    void Broadcaster_AdvEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData)
    {
        switch(event)
        {
            case BLEAPPUTIL_ADV_START_AFTER_ENABLE:
            {
                MenuModule_printf(APP_MENU_ADV_EVENT, 0, "Adv status: Started - handle: "
                                  MENU_MODULE_COLOR_YELLOW "%d" MENU_MODULE_COLOR_RESET,
                                  ((BLEAppUtil_AdvEventData_t *)pMsgData)->pBuf->advHandle);
                break;
            }
    
            case BLEAPPUTIL_ADV_END_AFTER_DISABLE:
            {
                MenuModule_printf(APP_MENU_ADV_EVENT, 0, "Adv status: Ended - handle: "
                                  MENU_MODULE_COLOR_YELLOW "%d" MENU_MODULE_COLOR_RESET,
                                  ((BLEAppUtil_AdvEventData_t *)pMsgData)->pBuf->advHandle);
                break;
            }
            
            // Advertising packet was just sent
            case BLEAPPUTIL_ADV_END:
            {
                // Disable advertising after one packet
                BLEAppUtil_advStop(broadcasterAdvHandle_1);
                break;
            }
    
            default:
            {
                break;
            }
        }
    }

    这应该会在发送单个数据包后禁用广播。 如果设备未连接、则对讲机将保持关闭状态、直到重新启用广播。 您可以使用计时器中断或时钟事件每90秒启用一次广播、以实现所需的功能。

    此致、

    1月