|
STM32L151 потребление в спящем режиме, с часами и кнопкой. Keil. |
|
|
|
May 22 2012, 08:00
|
Участник

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

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

Группа: Участник
Сообщений: 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)."
|
|
|
|
|
May 22 2012, 09:52
|

Гуру
     
Группа: Свой
Сообщений: 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){} }
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
May 22 2012, 10:21
|
Участник

Группа: Участник
Сообщений: 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" А после запука какая периферия отключена?!
Сообщение отредактировал spasbyspas - May 22 2012, 10:34
|
|
|
|
|
May 22 2012, 11:20
|

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

|
Цитата(spasbyspas @ May 22 2012, 13:21)  А после запука какая периферия отключена?!  В регистрах RCC_AHBENR RCC_APB2ENR RCC_APB1ENR почти везде нули, т.е. периферия не тактируется. И все биты включения в регистрах периферии то же сброшены . Это значит , что периферия выключена и потребляет так мало как это возможно. Я не правильно рассуждаю ?
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
May 22 2012, 11:40
|
Участник

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

|
Да, так точно после "RESET HANDLER" , я не понял этот абзац из сообщения.
Сообщение отредактировал spasbyspas - May 22 2012, 11:43
|
|
|
|
|
May 22 2012, 12:39
|

Гуру
     
Группа: Свой
Сообщений: 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 которая сама по себе и ни с чем не связана.
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
May 22 2012, 13:44
|
Участник

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

|
Цитата Разъве порт не должен стать высокоимпедансным ? Да, должен но и я наблюдаю подобные явления(но факт, что потребление снижается). Стадии разработке JTAG контакты должны бы не следует менять и специально в токой режиме. В общем, то есть проблема с программированием новой версии программа через JTAG и в частности SWD в "STANDBY mode".
Сообщение отредактировал spasbyspas - May 22 2012, 13:50
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|