ST32F417进入StandBy待机模式最快需要多长时间

zhahan1990STM32 2022-04-08 18:11:22 199阅读 江苏省无锡市 电信
我想要实现“掉电数据保存”功能,其中ADC1用于测量5V供电电压(为MCU等的3.3V 芯片供电),如果低于4.5V,MCU就会将512字节的掉电数据保存到专用Adesto AD45DB321的FLASH的PAGE中。这一页已经被预先擦除,所以我可以使用“write without pre erase”的函数来写入,这需要3毫秒时间,而不是正常的15毫秒。我实际测量下来的FLASH写入时间为2.5毫秒。

问题是电量下降的速度有点太快了,就在3毫秒左右,3.3V下降到大约2.3V。这个MCU器件的最小VCC是2.3V。

因此,我正在寻找降低功耗的方法,最直接的方法就是关闭CPU。查了各种文章,最终我发现

HAL _ PWR _ EnterSTANDBYMode();
这个函数:
void HAL_PWR_EnterSTANDBYMode(void)
{
  /* Select Standby mode */
  SET_BIT(PWR->CR, PWR_CR_PDDS);

  /* Set SLEEPDEEP bit of Cortex System Control Register */
  SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk));
  
  /* Request Wait For Interrupt */
  __WFI();
}

但出于某种奇怪的原因,这并没有什么效果,也许花的时间反而太长了?


是哪里少做了什么吗?我看到低功耗模式被中断退出,这可能是问题所在。就没有简单的“关机”函数吗?需要保留RTC和RTC RAM。


提示:如果此问题没有解决您的需求,您可以点击 “我也要问” 在线咨询。 我也要问

若此问题存在违规行为,您可以点击 “举报”

3条回答

  • 猎人电子
    2022-04-09 13:08:35 江苏省无锡市 电信
    CPU应该一碰到WFI就停止执行指令。电压调节器需要多长时间才能降低到关闭我不知道,数据手册只列出了唤醒时间,我想可能是“瞬时”的。

    STM32F4列表中待机的恢复选项,数据表的ch2.2.19,as(或参见参考手册5.3.6):
    引用
    当发生外部复位(NRST引脚)、IWDG复位、WKUP引脚上升沿或RTC报警/唤醒/篡改/时间戳事件时,芯片会退出待机模式。

    待机模式会停止所有高频OSC和稳压器,因此除了RTC和IWDG之外,没有其他外设在运行。禁用systick或任何其他产生IRQ的外设都不会有什么作用,因为他们没有工作时钟。
    这与Idle不同,Idle只暂停CPU执行指令。
    大多数STM32系列MCU都有不同级别的停止模式(该芯片只有一种停止模式),停止和/或仍可访问的外设级别各不相同。例如,在一些低功耗STM32L芯片上,深度停止模式可用于在I2C地址匹配时唤醒设备,而在待机状态下,它不能这样做。

    不幸的是,由于F系列并非真正针对复杂的低功耗操作,因此数据手册没有提供一个简洁的表格来概述所有电源模式和可以恢复其运行的外设。
    724 举报
  • 是你就是你
    2022-04-09 12:51:34 江苏省无锡市 电信
    可以按如下步骤简单的测试:
    -MCU正常启动
    -翻转一个pin的高低电平,然后使得MCU进入待机模式

    用电流表或者示波器上的引脚测量电流。

    https://www.ST.com/resource/en/application_note/an4365-using-STM32f4-MCU-power-modes-with-best-dynamic-efficiency-stmicroelectronics.pdf

    感觉很可能有什么东西唤醒了微处理器。
    256 举报
  • 肖强
    2022-04-08 18:28:25 江苏省无锡市 电信
    改变时钟频率试试呢?

    https://www.st.com/resource/en/datasheet/dm00035129.pdf

    76 举报

快速提问,在线解答

1

描述需求

填写需求概要标题,补充详细需求

2

耐心等

等待网友或网站工作人员在线解答

3

巧咨询

还有疑问?及时追问回复

立即咨询