1

我可以在 RTC 运行的情况下将我的 stm32L1xDiscovery 板置于 STOP 模式。根据数据表,这应该消耗大约 1.3 µA。但我的应用消耗 3.3 µA。

我注意到我没有在睡眠期间将 FLASH 置于低功耗模式。但是当我这样做时,什么都没有改变。

这是我用来进入停止模式的:

SCB->SCR |= ((uint32_t)SCB_SCR_SLEEPDEEP);

RCC->APB1ENR |= RCC_APB1Periph_PWR;
PWR->CR |= ((uint32_t)(PWR_CR_LPSDSR|PWR_CR_ULP)); // ULP seems to have no effect on power consumption
RCC->APB1ENR &= ~RCC_APB1Periph_PWR;

FLASH->ACR |= SLEEP_PD; // seems to have no effect at all on power consumption

__WFI();

知道我在这里缺少什么吗?

4

2 回答 2

1

你在哪里测量的功耗?您应该在 JP1 引脚 1 和 2 之间执行此操作(引脚 2 直接连接到 Vdd)。这应该显示 MCU 消耗的功率,当然还有任何由输出引脚供电的东西。

诀窍是正确断开并关闭所有引脚(唤醒源除外)以及所有不需要的时钟。

  • FLASH->ACR |= SLEEP_PD
  • 启用所有 GPIO 时钟
  • 将所有未连接的引脚置于模拟模式
  • RCC_APB1ENR_PWREN禁用除和唤醒 GPIO之外的所有时钟RCC->xxxLPENR
  • 然后在没有调试器的情况下启动这个东西,去掉 ST-Link (CN3) 跳线。

...可能还有其他问题。很难做到正确。

于 2016-04-07T13:56:59.300 回答
1

如果您使用发现板,您的测量可能不清楚,因为许多其他组件会消耗一些能量。它可以是保护二极管、3.3V 线路的驱动器或带有 ST-LINK/V2 嵌入式调试工具的第二个 MCU。

于 2016-04-06T12:26:21.977 回答