Перейти к содержанию
    

dima311043

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные dima311043


  1. __WFI(); // Попробуйте добавить перед while();

     

    Эта инструкция внутри функции PWR_EnterSTANDBYMode();

     

    Проблема решена. Ток хавали резисторы в цепи BOOT0. Выпаял резисторы R26 и R27 (см. принципиалку), ногу BOOT0 завел на землю. Токопотребление в режиме Standby упало до 1 мкА, точнее померять нет возможности. Всем отписавшимся в теме спасибо.

  2. Нет. На дискавери, правда, не JTAG, а SWD. Пробовал полностью отключать интерфейс программирования от целевого контроллера: на токопотребление это не оказывает влияния, либо оказывает незначительно.

     

    Неиспользуемые выводы нужно или перевести в режим выхода и вывести ноль (ноль - для уменьшения утечек на землю, если вокруг ноги с высоким потенциалом - лучше вывести единицу), либо включить соответствующую подтяжку.

    В библиотечных примерах все пины переводятся в режим аналогового входа, про конфигурирование их как выход нигде не читал. Вообще в режиме standby все выводы переходят в третье состояние и становятся недоступны. Завтра попробую ваш вариант и отпишусь о результатах. Хорошо, что у вас есть опыт работы с этими камнями, я тоже хочу выжать из мк все возможное:)

  3. Всем привет.

     

    Работаю с отладочной платой STM32L100 Discovery. Хочу добиться заявленного потребления ~0.3 uA в режиме standby. Делаю все как в примере для библиотеки Standard Peripheral Library с сайта ST, пример Current consumption из папки PWR для замера потребляемого тока. В итоге получаю потребление в этом режиме ~275uA. Ток меряю на выводах Idd на плате. Бьюсь уже довольно давно, много чего перепробовал, но меньшего значения, чем в том коде что идет ниже, добиться не удалось. Что я могу делать не так? Помогите, кто сталкивался. На всякий случай прилагаю еще принципиалку платы и библиотечный пример.

    GPIO_InitTypeDef GPIO_InitStructure;
    
    int main(void)
    {
     /* Enable PWR APB1 Clock */
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
    
     /* Allow access to RTC */
     PWR_RTCAccessCmd(ENABLE);
    
     /* Reset RTC Domain */
     RCC_RTCResetCmd(ENABLE);
     RCC_RTCResetCmd(DISABLE);
    
     /*  Configure Key Button*/
     /* Enable the BUTTON Clock */
     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    
     /* Configure Button pin as input */
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
     GPIO_Init(GPIOA, &GPIO_InitStructure);
    
     /* Wait Until Key button pressed */
     while((GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) == RESET)
     {
     }
     /* Wait Until Key button pressed */
     while((GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) != RESET)
     {
     }
    
     /* Enable Ultra low power mode */
     PWR_UltraLowPowerCmd(ENABLE);
    
     /* Clear PWR WakeUp flag */
     PWR_ClearFlag(PWR_FLAG_WU);
    
     /* Enable WKUP pin 1 */
     PWR_WakeUpPinCmd(PWR_WakeUpPin_1, ENABLE);
    
     /* Request to enter STANDBY mode */
     PWR_EnterSTANDBYMode();
     while(1){}
    }

    CurrentConsumption.rar

    disco.pdf

×
×
  • Создать...