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.

[参考译文] CC2651R3SIPA:如何定期从待机模式唤醒并进入工作模式

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1426260/cc2651r3sipa-how-to-periodically-wake-up-from-standby-mode-to-active-mode

器件型号:CC2651R3SIPA
Thread 中讨论的其他器件: ENERGYTRACE

工具与软件:

大家好

如何使用 RTC 定期将 CC2651R3SIPA 从待机模式唤醒、并进入工作模式?

在射频内核中有一个计时器。
我认为 RTC 用于在待机模式下的定期运行。

我担心如果使用 RTC 进行周期性操作、
CPU 也将在 RTC 事件发生时唤醒、从而增加了功耗。

是否可以仅使用 BLE 模块发送广播而不将 CPU 唤醒为待机模式?

此致、

Ito

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

    您好 Ito、

    我查看了您介绍的事件、并发送一个示例、请注意、该示例可能不在空工程中、因此您需要根据 BLE 环境对其进行调整。  

    谢谢!
    Alex F

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

    您好、Alex、

    感谢你的帮助。
    我很期待这件事。

    此致、

    Ito

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

    您好 K Z

    我希望你做得好。 因此、首先我们可能无法使用应用程序直接修改 RTC、请参考以下与此相关的线程:

    https://e2e.ti.com/f/1/t/467792/

    https://e2e.ti.com/f/1/t/478380/

    然而、作为一种替代方案、我们可以尝试使用计时器/GPTimer、对于这一点、我建议参考时序控制示例、因为它已经具有计时器的环境设置。 这应该也可以在 BLE 项目中实施!  

    [quote userid="584182" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1426260/cc2651r3sipa-how-to-periodically-wake-up-from-standby-mode-to-active-mode 是否可以只使用 BLE 模块发送广播而无需在待机模式下唤醒 CPU?

    -我不是完全确定在这里,将需要问另一个团队成员这是不可能的 BLE。  

    谢谢!
    Alex F

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

    您好、Alex F

    感谢你的帮助。

    [quote userid="584182" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1426260/cc2651r3sipa-how-to-periodically-wake-up-from-standby-mode-to-active-mode 是否可以只使用 BLE 模块发送广播而无需在待机模式下唤醒 CPU?

    我在这里等待解答。

    我又收到一个问题。

    请告知我是否只能使用射频内核 CPU 进行广播传输。
    虽然客户可能会问 CPU 的主要问题、
    我认为、通过仅运行射频内核 CPU、可降低电流消耗。

    此致、

    Ito

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

    你好、K。 Z

    如果客户正在运行 BLE 示例、则电源管理处理将进入低功耗模式。 请参阅下面的文档。

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

    客户需要了解会增加电流消耗的因素、例如开放 UART 端口或 外部电路。

    -kel

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

    您好 K Z

    是否可以在不将 CPU 唤醒的情况下仅使用 BLE 模块发送广播?

    -不可能这样做,设备必须唤醒以处理和处理数据。

    谢谢!
    Alex F

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

    您好、Alex、

    感谢您的答复。

    请告诉我是否只能使用射频内核 CPU 实现广播传输。

    这个问题的答案如何。

    此致、

    Ito

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

    您好 K Z

    在 proprf 中、应用程序需要设置无线电命令、并且在启动后"启动"无线电将持续发送命令(如果设置是这样)。  

    在这种情况下、您将使用 BLE、我认为这需要更多的处理/设置、我认为它可能仅针对射频内核。  

    谢谢!
    Alex F

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

    您好、Alex、

    我已经检查 TimerLED 示例代码、我可以确认它是由 GPIO 中断唤醒的。
    我还认为、激活计时器外设后就无法将器件转换为待机模式。
    由此、我认为计时器外设未在待机模式下运行。

    [问题]
    如何从待机状态定期唤醒并进入运行状态?
    BLE 在待机模式下停止。

    此致、

    Ito

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

    大家好、K.Z.

    如果您正在运行蓝牙示例程序示例简单外设、并且没有广播等事件、电源管理将以待机模式执行工作。 如果您没有像我分享的文档中所描述的那样的适当测试设备、您将不知道它是否处于待机模式。 您还可以在 CCS 中试用 EnergyTrace。

    -kel

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

    您好、

    感谢您的答复。

    如果您运行的是蓝牙示例程序示例简单外设、如果没有广播之类的事件、电源管理将在待机模式下执行工作。 [报价]

     蓝牙示例程序示例简单外设在哪里?
    我将使用 enegy trace 进行检查。

    此致、

    Ito

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

    您好 Ito、

    如果您在寻找简单的外设示例:

    C:\ti\simplelink_cc13xx_cc26xx_sdk_7_41_00_17\examples\rtos\LP_CC2651R3SIPA\ble5stack

    SLA 低功耗蓝牙5连接

    谢谢!
    Alex F

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

    您好、Alex、

    最后一个问题、
    我不知道如何从待机模式中唤醒。
    是否无法使用计时器从待机模式唤醒?
    我知道无法使用 RTC 唤醒。

    此致、

    Ito

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

    大家好、K.Z.

    如果您使用类似 simple peripheral 的 BLE 示例程序、下面将介绍电源管理的工作方式。

    无事件- 从活动模式自动切换到 待机模式。

    有事件-自动从待机模式切换到运行模式。

    事件的示例包括蓝牙广播、应用事件。

    这些事件在 RTOS 任务内进行处理。 示例应用事件是 以下代码中的 SBP_PERIODIC_EVT、如果简单外设连接到智能手机、则每5秒发生一次。

    static void SimplePeripheral_taskFxn(UArg a0, UArg a1)
    {
      // Initialize application
      SimplePeripheral_init();
    
      // Application main loop
      for (;;)
      {
        uint32_t events;
    
        // Waits for an event to be posted associated with the calling thread.
        // Note that an event associated with a thread is posted when a
        // message is queued to the message receive queue of the thread
        events = Event_pend(syncEvent, Event_Id_NONE, SBP_ALL_EVENTS,
                            ICALL_TIMEOUT_FOREVER);
    
        if (events)
        {
          ICall_EntityID dest;
          ICall_ServiceEnum src;
          ICall_HciExtEvt *pMsg = NULL;
    
          // Fetch any available messages that might have been sent from the stack
          if (ICall_fetchServiceMsg(&src, &dest,
                                    (void **)&pMsg) == ICALL_ERRNO_SUCCESS)
          {
            uint8 safeToDealloc = TRUE;
    
            if ((src == ICALL_SERVICE_CLASS_BLE) && (dest == selfEntity))
            {
              ICall_Stack_Event *pEvt = (ICall_Stack_Event *)pMsg;
    
              if (pEvt->signature != 0xffff)
              {
                // Process inter-task message
                safeToDealloc = SimplePeripheral_processStackMsg((ICall_Hdr *)pMsg);
              }
            }
    
            if (pMsg && safeToDealloc)
            {
              ICall_freeMsg(pMsg);
            }
          }
    
          // If RTOS queue is not empty, process app message.
          if (events & SBP_QUEUE_EVT)
          {
            while (!Queue_empty(appMsgQueue))
            {
              sbpEvt_t *pMsg = (sbpEvt_t *)Util_dequeueMsg(appMsgQueue);
              if (pMsg)
              {
                // Process message.
                SimplePeripheral_processAppMsg(pMsg);
    
                // Free the space from the message.
                ICall_free(pMsg);
              }
            }
          }
    
          if (events & SBP_PERIODIC_EVT)
          {
            //Util_startClock(&periodicClock);
    
            // Perform periodic application task
            SimplePeripheral_performPeriodicTask();
          }
    
    #if 0
          if(events & SBP_SCTASK_EVT)
          {
              //riza
              MyData_SetParameter_int(MYDATA_DATA_ID,
                                  MYDATA_DATA_LEN,
                                  adcValue_avg);
              //MyData_SetParameter(MYDATA_DATA_ID,
              //                    MYDATA_DATA_LEN,
              //                    &adcValue_avg);
    
          }
    #endif
        }
      }
    }

    如果您只知道如何使 RTC 和计时器成为由 RTOS 任务处理的事件、则 RTC 和计时器可能成为事件。 但无论如何、您不需要使用 RTC 或计时器进行蓝牙广播。

    -kel

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

    尊敬的 Kel:

    感谢您的答复。

    我还可以使用 SBP_PERIODIC_EVT 作为使用 RTC 和计时器创建事件的参考吗?

    此致、

    Ito

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

    你好、K。 Z

    您可以将事件或队列发布到 RTOS 任务。 一个简单的外设来执行该操作。

    event_post (syncEvent、SBP_SCTACK_EVT);

    SimplePeripheral_enqueueMsg ()

    例如、在中、计时器中断可以调用上面的 c 函数来处理事件。

    我目前找不到相关的学习资源、但您可以通过查看代码来学习它。

    -kel