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

Микропотребление STM32L100

Собрал девайс на STM32L100, написал прогу. Всё работает, но не могу получить микропотребление. Хочу в режим Stop+RTC. По даташтиту 1,4 мкА. Я смог получить 50 мкА.

 

Наверно куда-то на плате утекает. Есть такая же плата, на которой кроме процессора и подтяжки ресета ни чего не запаяно. Залил туда этот-же код - получил в стопе теже 50 мкА.

Собрал в кубе новый проект, в котором только debugwire и RTC использую, клокирую от HSI: итог 500 мкА!!! Ладно, хал в топку.... собрал холоворд в иаре

 

#include "stm32l1xx.h"
int main()
{
   pause();//сделал нопами паузу в несколько секунд, чтоб можно без болезненно перезаписать/стереть флешь
  PWR->CR |= 1; // Voltage regulator in low-power mode during deepsleep/Sleep/Low-power run mode
  __WFI();
}

получил 0,9 мА.

 

залил на эту голую плату собранный пример из ...STM32Cube_FW_L1_V1.8.0\Projects\STM32L100C-Discovery\Examples\PWR\PWR_STOP\EWARM - получил тоже что-то около 0,5-1 мА

Что не так? Как получить микропотребление?

Изменено пользователем razrab83

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все неиспользуемые порты - на выход и на "0", плату отмыть, отладчик не подключать.. Как-то так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отключить SWD/SWC после прошивки и сделать RESET.

Естественно отключаю. Ресет не делаю, отключаю питание, отключаю отладчик, включаю питание, измеряю ток потребления.

 

плату отмыть
... и протереть педали.

 

Плата чистая. Заливаю рабочую прошивку - потребление 50мкА, заливаю тестовую (полный код в первом посте) - 900 мкА.

 

Все неиспользуемые порты - на выход и на "0"
Это можно проверить.... но как на них подать 0, если порты не используются? Т.е. нет даже клоков на порт. Или нужно на все порты подать клок и все порты проинитить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот плата. Куда тут может утекать? Добавил в код deepsleep - не помогло.

 

#include "stm32l1xx.h"
int main()
{
   pause();
  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
  PWR->CR |= PWR_CR_LPSDSR;
  __WFI();
}

Может питание аналоговое отрезать? или VLCD? Но эта периферия отключена (после сброса) - не должно быть потребления.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осциллографом смотрели ток потребления, который 50мкА? Это случаем не периодические пробуждения устройства? Подтяжку на reset поменяйте на 100к, на всякий случай

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пожалуйста, не обижайтесь, но... Измерятор-то правильный? Что если дать вольт через мегаомный резюк - увидит прибор микроампер? А то может у него шкала 50 мкА, т.е. наврал производитель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осциллографом смотрели ток потребления, который 50мкА? Это случаем не периодические пробуждения устройства? Подтяжку на reset поменяйте на 100к, на всякий случай

Нет, не пробуждение. Да и причин проснуться нет. Весь код в 3-х строчках. Больше нет ни чего, ни куба, ни spl.... хотя нет... есть ещё startup от st.

На stm8l получал единицы мкА, там ресет подтягивал 10 кОм.

 

Измерятор-то правильный?

мультиметр.... специально не калибровал, но потребление радиомодуля в слыпрежиме 1 мкА, прибор колеблется 1-2 мкА.... stm8 по даташиту 1 мкА - прибор 1-2 мкА, stm8s по даташиту 10 мкА, прибор показал 10 мкА.

 

да и если даже он врёт.... с одной прошивкой 50 мкА на 2-х платах, с другой 500 мкА на двух платах.

 

Что-то st-эмовцы недоговаривают в даташитах... или я найти не могу.... вот в стм8 - там 3 порта, PA, PC, PB. В каждом я использую несколько ножек. Т.е. в начале программы я подаю клоки на все GPIO, потом иничу нужные, потом ненужные иничу в режим минимального потребления. Результат на лицо мультиметр - как по даташиту. Каждая периферия потребляет ток согласно таблицам в даташитах.

 

Теперь stm32l100 - тут много портов.... использую мало. Те что не использую, какойнить GPIOC, то вообще не подаю на него клоки, ибо он не нужен. Для эксперимента с микропотреблением на голой плате не инитил вообще ни какую периферию.... ни цап-ацп, ни gpio, ни клоки.... делаю всё строго по мануалу: даю sleepdeep, даю PWR_CR_LPSDSR и спать!

– Set SLEEPDEEP bit in Cortex ® -M3 System Control register

– Clear PDDS bit in Power Control register (PWR_CR) //это в нуле по сбросу

– Clear WUF bit in Power Control/Status register (PWR_CSR)//это в нуле по сбросу

– Select the voltage regulator mode by configuring LPSDSR bit in PWR_CR

Т.е. останавливаются все клоки, останавливается вся периферия, останавливается ядро, отключается флешь, сохраняется озу и состояние портов. ЖРЁТ милиампер!!! Да как так-то? Или не проиниченные GPIO без клоков жрут токи?

Изменено пользователем razrab83

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если совсем ничего не записать в МК, сколько потребляет? :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... но как на них подать 0, если порты не используются? Т.е. нет даже клоков на порт. Или нужно на все порты подать клок и все порты проинитить?

Да, подать тактирование на GPIO, проинитить - выходы, в "0", отключить пулл-апы-дауны, отключить тактирование.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если совсем ничего не записать в МК, сколько потребляет? :rolleyes:

На днях запаял в новую плату чистый stm32f303 и включил. Так он грелся, зараза. Я думал, что что в топологии напутал чего, но заливка прошивки прошла штатно и греться перестало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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