我有一个包含定制应用的定制电路板、其功耗高于预期。 我使用 Power_registerNotify 编写了一个调试函数、以确定我们是否要进入低功耗模式、并在主任务中添加了回调、但从未发生通知。 由此以及高功耗特性、我只能假设我的应用从未降至待机或低功耗状态。 我正在使用默认策略(SB)、该策略指出非常激动、并会尽可能转到 SB。
我是否有办法确定哪个模块阻止应用程序进入 SB? 我将使用 IAR 和 SDK simplelink_cc13x2_26x2_SDK_5_10_00_48。
谢谢。
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.
我有一个包含定制应用的定制电路板、其功耗高于预期。 我使用 Power_registerNotify 编写了一个调试函数、以确定我们是否要进入低功耗模式、并在主任务中添加了回调、但从未发生通知。 由此以及高功耗特性、我只能假设我的应用从未降至待机或低功耗状态。 我正在使用默认策略(SB)、该策略指出非常激动、并会尽可能转到 SB。
我是否有办法确定哪个模块阻止应用程序进入 SB? 我将使用 IAR 和 SDK simplelink_cc13x2_26x2_SDK_5_10_00_48。
谢谢。
您好!
您能否简单描述一下您的应用在做什么?
您的固件是否基于我们的其中一个 SDK 示例?
https://dev.ti.com/tirex/explore/node?node=A__AJE5PlHxcCS3M1k4fd7DWw__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__LATEST
既然你已经在蓝牙论坛上发布过、可能是一个 BLE5-Stack 示例?
为了检查它是否是使器件处于运行状态的硬件模块、此处的寄存器可参考: https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/docs/driverlib_cc13xx_cc26xx/cc13x2x7_cc26x2x7/register_descriptions/CPU_MMAP/PRCM。html
我建议检查 PRCM 寄存器、例如:
之后、您可以检查可能需要工作模式的不同外设。
例如、要检查 UART 的这一点、这些寄存器是相关的:
谢谢。
托比
感谢 Toby、
是的、该应用基于 simple_peripheral SDK 示例。 此应用程序是 ASIC 的接口、可生成模拟信号和大量数据、然后通过 BLE 流式传回。 我们正在努力将功耗降至最低、而系统空闲时、这意味着会对 ASIC 进行选通、并且不会发生 BLE 活动、除了以低速率广播之外。
查看寄存器非常有用、因为它让我看到许多模块在睡眠或深度睡眠期间都具有 CLK EN、所以我有一个后续问题:
如果 I2CCLKGR = I2CCLKGS = I2CCLKGDS = CLK_EN = 1、这是否意味着 I2C 模块会因需要运行时钟而阻止深度睡眠、还是意味着只有特定模块不会进入深度睡眠状态?
我正在考虑修改 I2C 代码、以便在 I2C 事务完成后立即关闭句柄、从而在空闲状态下大部分时间都不使用 I2C 硬件资源。
谢谢
如果 I2CCLKGR = I2CCLKGS = I2CCLKGDS = CLK_EN = 1,这是否意味着 I2C 模块会由于需要时钟运行而阻止深度睡眠,或仅意味着只有特定模块将不会进入深度睡眠状态?
是的、这是我的理解。
通常、为了实现最低功耗运行、我们建议针对任何未使用的模块调用*_close。
当应用准备好进入低功耗模式时、您能否尝试调用 I2C_Close?
根据 I2C ASIC 的不同、在 I2C_Close 之前、您可能还需要发送一些 I2C 命令来将 ASIC 置于低功耗模式。