Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F401 жрет 2мА в STOP режиме!
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
kostyan
Есть плата на STM32F401VET6, надо сделать режим микропотребления. Впаял одноомные резисторы на 11, 19-21-22, 28, 50, 75, 100 ноги в разрыв питания. Сколько мВ падает на этих резисторах - столько мА собственно потребляет проц. Перед уходом в стоп отрубаю всю переферию, все неиспользуемые ноги - выход ноль, или если есть подтяжки - входом. Потом делаю "PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);" Но счастья не приходит sad.gif . На резисторах насчитал что падает около 2.2 мВ в сумме. Больше всего на 19-21-22, один резистор на три ноги, падает примерно 0.8 мВ. И на 11 и 28 ногах по 0.3-0.4 мВ примерно. На вход платы подцепил стрелочный четкий амперметр, он показывает потребление платы те же примерно 2.2 мА. То есть по сути всё что жрет плата - жрет проц, всякие преобразователи напряжений, питающие плату, не шалят. Ноги общупал осцилом. Криминала не вижу. Собственно что делать? Есть плата диско401 - там запускаю ST-шный пример микропотребления в режиме STOP - вуаля, десятки микроампер. Вот даже не знаю что же отрезать начать - все ноги что ли, используемые в проекте, подряд?
kostyan
Как говорится, сам дурак, переферию не полностью отключал, только тактирование выключал, а надо еще и _CMD( , DISABLE); делать для всего и вся. Дело сдвинулось с мертвой точки. Еще с волтаж регулятором надо побаловаться.
kostyan
Продолжим изыскания, жрет уже 400мкА плата в режиме стоп. Но заметил неприятность. Выключаю sd карту как написанно тут:

CODE
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 мкА, что совсем не есть айс! Это нормально, или програмно как то можно уменьшить потребление?
adnega
Цитата(kostyan @ Apr 28 2015, 10:58) *
Получается карточка потребляет 120 мкА, что совсем не есть айс! Это нормально, или програмно как то можно уменьшить потребление?

Я вас еще сильнее огорчу: в спецификации SD описаны некоторые состояния, выйти из которых можно только через сброс питания.
Я везде ставлю ключик на питание карты.
kostyan
Спасибо, будем применить.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.