Jump to content

    
Sign in to follow this  
kostyan1

STM32F401 жрет 2мА в STOP режиме!

Recommended Posts

Есть плата на STM32F401VET6, надо сделать режим микропотребления. Впаял одноомные резисторы на 11, 19-21-22, 28, 50, 75, 100 ноги в разрыв питания. Сколько мВ падает на этих резисторах - столько мА собственно потребляет проц. Перед уходом в стоп отрубаю всю переферию, все неиспользуемые ноги - выход ноль, или если есть подтяжки - входом. Потом делаю "PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);" Но счастья не приходит :( . На резисторах насчитал что падает около 2.2 мВ в сумме. Больше всего на 19-21-22, один резистор на три ноги, падает примерно 0.8 мВ. И на 11 и 28 ногах по 0.3-0.4 мВ примерно. На вход платы подцепил стрелочный четкий амперметр, он показывает потребление платы те же примерно 2.2 мА. То есть по сути всё что жрет плата - жрет проц, всякие преобразователи напряжений, питающие плату, не шалят. Ноги общупал осцилом. Криминала не вижу. Собственно что делать? Есть плата диско401 - там запускаю ST-шный пример микропотребления в режиме STOP - вуаля, десятки микроампер. Вот даже не знаю что же отрезать начать - все ноги что ли, используемые в проекте, подряд?

Share this post


Link to post
Share on other sites

Как говорится, сам дурак, переферию не полностью отключал, только тактирование выключал, а надо еще и _CMD( , DISABLE); делать для всего и вся. Дело сдвинулось с мертвой точки. Еще с волтаж регулятором надо побаловаться.

Share this post


Link to post
Share on other sites

Продолжим изыскания, жрет уже 400мкА плата в режиме стоп. Но заметил неприятность. Выключаю sd карту как написанно тут:

 

void SD_LowLevel_DeInit(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;

 /*!< Disable SDIO Clock */
 SDIO_ClockCmd(DISABLE);

 /*!< Set Power State to OFF */
 SDIO_SetPowerState(SDIO_PowerState_OFF);

 /*!< DeInitializes the SDIO peripheral */
 SDIO_DeInit();

 /* Disable the SDIO APB2 Clock */
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SDIO, DISABLE);

 GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_MCO);
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_MCO);
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_MCO);
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_MCO);
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_MCO);
 GPIO_PinAFConfig(GPIOD, GPIO_PinSource2, GPIO_AF_MCO);

 /* Configure PC.08, PC.09, PC.10, PC.11 pins: D0, D1, D2, D3 pins */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
 GPIO_Init(GPIOC, &GPIO_InitStructure);

 /* Configure PD.02 CMD line */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
 GPIO_Init(GPIOD, &GPIO_InitStructure);

 /* Configure PC.12 pin: CLK pin */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
 GPIO_Init(GPIOC, &GPIO_InitStructure);
}

 

Ухожу в сон, плата потребляет 400мкА. SD карточку вытаскиваю на горячую - потребление платы уменьшается до 280 мкА. Получается карточка потребляет 120 мкА, что совсем не есть айс! Это нормально, или програмно как то можно уменьшить потребление?

Share this post


Link to post
Share on other sites
Получается карточка потребляет 120 мкА, что совсем не есть айс! Это нормально, или програмно как то можно уменьшить потребление?

Я вас еще сильнее огорчу: в спецификации SD описаны некоторые состояния, выйти из которых можно только через сброс питания.

Я везде ставлю ключик на питание карты.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this