chaplin_0722 发表于 2014-11-30 15:50:57

STM32F030低功耗问题,stop mode下电流好大。。。

在做低功耗过程发现一个严重的问题,F030C8这块芯片在进入stop mode后电流居然在900uA左右。这与典型值相差甚远啊。测试用的是ST-Link供电,VDDA,只保留芯片工作,其他都拿掉了,工作在HSI。但是发现很奇怪的问题,拿掉外部晶振后电流
反而达到毫安级别,重新把外部晶振焊上就降下来了(SysInit根本没有选择外部晶振作为系统时钟)。
NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
       
        PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);还有一个问题,关于NVIC_SystemLPConfig和RCC_APB1PeriphClockCmd的,加上这两个函数与不加上这两个函数的效果又是
不一样了。查了相关资料没有查到。
小弟低功耗这块之前没有搞过,但是问题摆在这,现在进行不了了。各位老师求指导...........

chaplin_0722 发表于 2014-11-30 15:52:30

关于stop mode这一块有什么要注意的地方,还请各位大神指点。:)

巅峰残狼 发表于 2014-12-1 12:56:33

使用内部时钟的话,确实会比使用外部时钟功耗要大

发表于 2014-12-2 09:14:54

应该和晶振没关系,你不要在仿真状态进入休眠,在离线状态测试一下。JTAG口也可能会有漏电流。

hejian1 发表于 2014-12-2 11:00:57

没有这么高,肯定是其他地方或是电路有问题。我用STM32F030R8T6实测,也就是官方八个discovery板,HSI,所有IO口设置下拉输入,停止模式31uA 。待机4.5uA.

hejian1 发表于 2014-12-2 11:04:58

本帖最后由 hejian1 于 2014-12-2 11:08 编辑


void GPIO_Set()
{
   GPIO_InitTypeDef GPIO_InitStructure;
         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF, ENABLE);
      
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
      GPIO_Init(GPIOB, &GPIO_InitStructure);
      GPIO_Init(GPIOC, &GPIO_InitStructure);
      GPIO_Init(GPIOD, &GPIO_InitStructure);
      GPIO_Init(GPIOF, &GPIO_InitStructure);
      
}

hejian1 发表于 2014-12-2 11:09:05

int main()
{
      GPIO_Set();
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
//      PWR_EnterSTANDBYMode();
          PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);

      while(1)
      {

      }
      return 0;
}

好心情123 发表于 2014-12-3 08:39:41

为什么内部振荡器会比外部晶振的功耗高呢,好奇怪

深圳小明 发表于 2016-6-17 09:45:16

hejian1 发表于 2014-12-2 11:09
int main()
{
      GPIO_Set();


请问一下,这样一上电就进入STOP模式之后,怎样才能进行固件烧录?否则这个芯片就只能浪费了。

任风吹吹 发表于 2016-6-17 10:37:23

深圳小明 发表于 2016-6-17 09:45
请问一下,这样一上电就进入STOP模式之后,怎样才能进行固件烧录?否则这个芯片就只能浪费了。 ...



看这图,就这么烧录的。

页: [1] 2
查看完整版本: STM32F030低功耗问题,stop mode下电流好大。。。