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的,加上这两个函数与不加上这两个函数的效果又是
不一样了。查了相关资料没有查到。
小弟低功耗这块之前没有搞过,但是问题摆在这,现在进行不了了。各位老师求指导...........
关于stop mode这一块有什么要注意的地方,还请各位大神指点。:) 使用内部时钟的话,确实会比使用外部时钟功耗要大 应该和晶振没关系,你不要在仿真状态进入休眠,在离线状态测试一下。JTAG口也可能会有漏电流。 没有这么高,肯定是其他地方或是电路有问题。我用STM32F030R8T6实测,也就是官方八个discovery板,HSI,所有IO口设置下拉输入,停止模式31uA 。待机4.5uA. 本帖最后由 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);
}
int main()
{
GPIO_Set();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
// PWR_EnterSTANDBYMode();
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
while(1)
{
}
return 0;
}
为什么内部振荡器会比外部晶振的功耗高呢,好奇怪
hejian1 发表于 2014-12-2 11:09
int main()
{
GPIO_Set();
请问一下,这样一上电就进入STOP模式之后,怎样才能进行固件烧录?否则这个芯片就只能浪费了。 深圳小明 发表于 2016-6-17 09:45
请问一下,这样一上电就进入STOP模式之后,怎样才能进行固件烧录?否则这个芯片就只能浪费了。 ...
看这图,就这么烧录的。
页:
[1]
2