реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> STM32L151 потребление в спящем режиме, с часами и кнопкой. Keil.
MiklPolikov
сообщение May 21 2012, 19:36
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Коллеги, нет ли тут уже открытой темы про то как добится от STM32L151 потребления 10мкА при идущих часах RTC и прерывании от кнопки ?

Информации много, и некоторых вещей я совсем не понимаю. Например как переписать функцию из FLASH в RAM , и как затем выключить FLASH ,
и сколько после этог перестанет потреблять FLASH ?

Подсткажите , с чего начать ?

Спасибо.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 22 2012, 05:31
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(MiklPolikov @ May 22 2012, 01:36) *
Информации много, и некоторых вещей я совсем не понимаю. Например как переписать функцию из FLASH в RAM , и как затем выключить FLASH ,
и сколько после этог перестанет потреблять FLASH ?

Если у вас IAR, то просто добавьте функции модификатор __ramfunc и компилятор скомпилит её для работы в ОЗУ, а стартап-код скопирует её в ОЗУ.
Go to the top of the page
 
+Quote Post
spasbyspas
сообщение May 22 2012, 08:00
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-08-08
Пользователь №: 39 908



Потребления STM32L151 при идущих часах RTC в "STANDBY mode" если включен "internal reference voltage" составляет около 4uA, а если выключен - 1,3uA. Я не понимал, для какой режим вашего запроса, но я могу помочь с кодом.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 22 2012, 08:44
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(spasbyspas @ May 22 2012, 11:00) *
Потребления STM32L151 при идущих часах RTC в "STANDBY mode" если включен "internal reference voltage" составляет около 4uA, а если выключен - 1,3uA. Я не понимал, для какой режим вашего запроса, но я могу помочь с кодом.

A после выхода из Stanby он может продолжать работу с того же места без переинициализации?
Go to the top of the page
 
+Quote Post
spasbyspas
сообщение May 22 2012, 09:10
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-08-08
Пользователь №: 39 908



Нет, из "STANDBY mode" работа начинается с "Reset_Handler" т.е. сначала. Сохранени только состояние регистров RTC и PWM. Также "All registers are reset after wakeup from Standby except for PWR power control/status register (PWR_CSR)."
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 22 2012, 09:19
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Спасибо за информацию.
Цитата(spasbyspas @ May 22 2012, 12:10) *
Нет, из "STANDBY mode" работа начинается с "Reset_Handler" т.е. сначала. Сохранени только состояние регистров RTC и PWM. Также "All registers are reset after wakeup from Standby except for PWR power control/status register (PWR_CSR)."

Не густо с sleep-ом.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение May 22 2012, 09:52
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(spasbyspas @ May 22 2012, 11:00) *
Потребления STM32L151 при идущих часах RTC в "STANDBY mode" если включен "internal reference voltage" составляет около 4uA, а если выключен - 1,3uA. Я не понимал, для какой режим вашего запроса, но я могу помочь с кодом.


Мне нужно, что бы процессор мог выйти из спящего режима по кнопке и по RTC, желательно начал с того же места где остановился.
Какой это режим ? Пытаюсь сделать Low power sleep вот таким образом . Получаю ток 1.6мА. Как я понимаю, после запуска вся периферия отключена, и в коде её отключать не надо.

Код
int main(void)
{
   RCC->CFGR &=~RCC_CFGR_SW;  //Выбрали System clock  MSI

   RCC->CR &= ~RCC_CR_HSION;      //вЫключили генератор HSI
    
   RCC->ICSCR&=~RCC_ICSCR_MSIRANGE;    
   RCC->ICSCR|=RCC_ICSCR_MSIRANGE_64KHz; //MSI 64 KHz

   PWR->CR |= PWR_CR_LPSDSR;       //при входе в спящий режим переводим встроеный стабилизатор в режим малого портебления
   PWR->CR |= PWR_CR_LPRUN;      //Voltage regulator in low power mode in Low power run mode
   PWR->CR |= PWR_CR_ULP;      //Внутренний источник опорного напряжения отключен в спящем режиме

   SCB->SCR&=~SCB_SCR_SLEEPONEXIT; // не дожидаемся окончания выхода из прерывания перед входом в спящий режим

    __WFI();   //заснули

    while(1){}
}


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 22 2012, 09:56
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(MiklPolikov @ May 22 2012, 12:52) *
Мне нужно, что бы процессор мог выйти из спящего режима по кнопке и по RTC, желательно начал с того же места где остановился.

Тогда вам EFM32 - самое то.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение May 22 2012, 10:04
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(_Артём_ @ May 22 2012, 12:56) *
Тогда вам EFM32 - самое то.

У меня уже STM32L151


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 22 2012, 10:16
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(MiklPolikov @ May 22 2012, 13:04) *
У меня уже STM32L151

Я вам про EFM. а не STM.
Но если выбор сделан ...то дело ваше.
Go to the top of the page
 
+Quote Post
spasbyspas
сообщение May 22 2012, 10:21
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-08-08
Пользователь №: 39 908



Цитата
Мне нужно, что бы процессор мог выйти из спящего режима по кнопке и по RTC, желательно начал с того же места где остановился.
Какой это режим ? Пытаюсь сделать Low power sleep вот таким образом . Получаю ток 1.6мА. Как я понимаю, после запуска вся периферия отключена, и в коде её отключать не надо.


Да, тогда вы можете успешно использовать "STOP Mode" в конфигурация "Regulator in LP mode", "VREFINT OFF".
Как правило, вы можете посмотреть "AN3413 STM32L-DISCOVERY: current consumption measurement and touch sensing demonstration" и пример PWR->CurrentConsumption из "StdPeriph_Lib" для STM32L.

И, чтобы напомнить вам, как дополнительное правило для снижение енергопотребление:
"Configure all GPIO as analog to reduce current consumption on non used IOs"

А после запука какая периферия отключена?! rolleyes.gif

Сообщение отредактировал spasbyspas - May 22 2012, 10:34
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение May 22 2012, 11:20
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(spasbyspas @ May 22 2012, 13:21) *
А после запука какая периферия отключена?! rolleyes.gif


В регистрах RCC_AHBENR RCC_APB2ENR RCC_APB1ENR почти везде нули, т.е. периферия не тактируется.
И все биты включения в регистрах периферии то же сброшены .
Это значит , что периферия выключена и потребляет так мало как это возможно.
Я не правильно рассуждаю ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
spasbyspas
сообщение May 22 2012, 11:40
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-08-08
Пользователь №: 39 908



Да, так точно после "RESET HANDLER" , я не понял этот абзац из сообщения.

Сообщение отредактировал spasbyspas - May 22 2012, 11:43
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение May 22 2012, 12:39
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(spasbyspas @ May 22 2012, 13:21) *
И, чтобы напомнить вам, как дополнительное правило для снижение енергопотребление:
"Configure all GPIO as analog to reduce current consumption on non used IOs"


Не понимаю :

делаю

GPIOB->MODER=0xFFFFFFFF; //сделали порт аналоговым
GPIOB->PUPDR=0; // отключили pull-up pull-doun

и на одной из ног появляется + и зажигается светодиод. А другой светодиод не зажигается.
Судя по напряжению на ноге она снановится подтянут к+ через резистор несколько К

Разъве порт не должен стать высокоимпедансным ?
Ещё перестаёт работать JTAG , хотя вроде бы он к этим ногам отношения не имеет.
На блок-схеме порта не вижу никакого отключения выходных транзиторов, а вижу отдельную линию ANALOG которая сама по себе и ни с чем не связана.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
spasbyspas
сообщение May 22 2012, 13:44
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-08-08
Пользователь №: 39 908



Цитата
Разъве порт не должен стать высокоимпедансным ?

Да, должен но и я наблюдаю подобные явления(но факт, что потребление снижается). rolleyes.gif

Стадии разработке JTAG контакты должны бы не следует менять и специально в токой режиме.
В общем, то есть проблема с программированием новой версии программа через JTAG и в частности SWD в "STANDBY mode".

Сообщение отредактировал spasbyspas - May 22 2012, 13:50
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 13:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01514 секунд с 7
ELECTRONIX ©2004-2016