Thread 中讨论的其他器件: ENERGYTRACE
工具与软件:
大家好
如何使用 RTC 定期将 CC2651R3SIPA 从待机模式唤醒、并进入工作模式?
在射频内核中有一个计时器。
我认为 RTC 用于在待机模式下的定期运行。
我担心如果使用 RTC 进行周期性操作、
CPU 也将在 RTC 事件发生时唤醒、从而增加了功耗。
是否可以仅使用 BLE 模块发送广播而不将 CPU 唤醒为待机模式?
此致、
Ito
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.
工具与软件:
大家好
如何使用 RTC 定期将 CC2651R3SIPA 从待机模式唤醒、并进入工作模式?
在射频内核中有一个计时器。
我认为 RTC 用于在待机模式下的定期运行。
我担心如果使用 RTC 进行周期性操作、
CPU 也将在 RTC 事件发生时唤醒、从而增加了功耗。
是否可以仅使用 BLE 模块发送广播而不将 CPU 唤醒为待机模式?
此致、
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
您好、
感谢您的答复。
如果您运行的是蓝牙示例程序示例简单外设、如果没有广播之类的事件、电源管理将在待机模式下执行工作。 [报价]蓝牙示例程序示例简单外设在哪里?
我将使用 enegy trace 进行检查。此致、
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