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.

[参考译文] RTOS/CC2650:[CC2650 BLE]为我的应用提供最佳功耗模式、建议使用。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/565001/rtos-cc2650-cc2650-ble-best-power-mode-for-my-application-please-advise

器件型号:CC2650
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

大家好、  

请在以下两个条件下告知我的应用的最佳功耗模式。

1.我的器件将通过计时器中断定期唤醒、收集数据(传感器控制器不可用)。 然后进入睡眠模式。 时间将非常长、例如几个小时。

2.在睡眠模式期间、器件等待两个事件。 串行通信和 BLE 连接。 如果没有事件、则保持睡眠模式。

正如我所检查的,RF 和 UART 在待机模式下似乎不可用,那么空闲模式是我的断电模式的唯一选项?

我希望在可能的情况下保持待机模式并唤醒至激活模式。

请给我一些建议吗?

此致、

Hae Ryong

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

    您好、Hae、

    进入待机模式将导致射频内核和外设电源域的电源门控。  但对于典型的 BLE 应用、这不是问题、因为相应的外设驱动程序将在器件从待机状态唤醒时通过电源驱动程序发送给这些驱动程序的通知恢复状态。  这里我不会介绍很多细节、但我的主要要点是、您通常可以在应用中使用射频内核以及许多外设、同时仍让器件进入/退出待机模式。

    如果您尚未看到电源管理用户指南(在您的 TI-RTOS 安装中,例如:C:\ti_tirtos_cc13xx_cc26xx_2_21_00_06\docs\Power_Management.pdf)提供了电源管理概念的说明。

    根据您的描述、应用程序可能会遇到两个问题:

    1) 表示“设备等待两个事件。 串行通信”。  如果 UART 必须保持通电状态并能够将设备从睡眠状态唤醒,则无法使用“待机”。

    2)和“通过计时器中断定期唤醒”。  通用计时器外设在待机期间也会进行电源门控,因此如果您使用其中一个外设,则无法使用待机。  但是,如果您使用内核的时钟模块进行周期性唤醒(通过创建时钟对象或使用内核 API 超时,例如使用 Semaphore_pend()),那么您仍然可以使用“待机”,因为时钟模块使用下面的 RTC,它在待机期间继续运行。  时钟模块(和 RTC)的任何超时都会自动将器件从待机模式唤醒。

    如果无法在应用程序中使用待机,则下一个最佳选项是 IDLE_PD 状态。  这允许对 CPU 电源域进行门控(但保留关键状态)、与简单等待中断(WFI)相比、还可以节省更多成本。

    希望这对…很有帮助

    此致、
    Scott

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

    感谢您的详细说明。
    这很有帮助。
    我认为空闲似乎是这种情况的可能选择。

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

    请问如何在待机模式下使用 RTC 唤醒? (任何参考代码或其他...)
    我认为我必须使用待机模式并解决有关 BLE 和周期性唤醒的问题。 (串行连接除外)

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

    您好、Hae、

    最简单的操作是使用其中一个具有超时的内核 API。  所有这些超时使用时钟模块、而时钟模块使用 RTC、这将器件从待机状态唤醒。

    例如、在任务线程中、调用:

       Task_sleep (delay_in_microseconds/Clock_tickPeriod);

    Task_sleep()的参数是以时钟节拍周期为单位的延迟,“Clock_tickPeriod”是为时钟配置的节拍周期,以微秒为单位。  要引用“Clock_tickPeriod”,您的文件将需要:

       #include

    对 Task_sleep()的调用将阻止当前任务的执行,并将超时记录在时钟模块中。  当所有任务都被阻止时,空闲循环将运行,在此情况下,电源驱动程序的策略将检查限制和时间,直到下一个节拍为止,并自动将设备转换为待机状态。  当 RTC 中断在超时发生时,设备将从待机状态唤醒,然后您的任务将恢复,并从 Task_sleep()调用返回。

    您还可以显式创建一个时钟对象、以便为从待机状态唤醒的时间向时钟注册超时。  TI-RTOS 附带的一个“时钟”示例显示了一些时钟 API 的用法。

    希望这对您有所帮助。

    此致、
    Scott

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

    非常感谢。
    我将对其进行研究。

    此致、
    Hae Ryong