STM32L, STOP mod a spotreba

Tomas Urbanek turbyho na me.com
Pondělí Březen 21 09:55:42 CET 2016


Tam maly posun v uceni. Zjistil jsem, ze je nutne nejen deaktivovat zarizeni (uart atd) a vypnout hodiny na port, ale ze je nutne piny celeho portu zcela prekonfigurovat na analogovy vstup a vypnout hodiny na portech. Pote je spotreba jiz nizka. Zde ale narazim na dalsi problem. Nejsem schopen po probuzeni zpet rekonfigurovat port respektive nahodit uart aby fungoval. 

Turby



21. 3. 2016 v 6:54, Jiří Nesvačil <nesvacil na posys.eu>:

> Zdravim,
> zkusil bych ten cube configurator, tam si vybrat CPU a hrat si s periferii, treba Vas neco napadne, co mate zapnute. Nebo i nejake odpory na GPIO pokud mate... . 
> 
> Nebo strycka google 
> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3A%2F%2Fmy.st.com%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FSTM32L151%20Stop%20mode%20power%20consumption&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=170
> 
> Jirka
> 
> Dne 20. 3. 2016 v 21:43 Tomas Urbanek napsal(a):
>> Zdravim,
>> byl jsem okolnostmi donucen zacit delat s STM32L a mam problem se STOP modem. Za zadnou cenu nemohu dosahnout deklarovane spotreby v tomto modu. Ve STANDBY modu je spotreba spravna okolo nekolika uA, ale v STOP modu o mnoho vyssi nez by mela - okolo 200uA. Zkousim na NUCLEO L152RE. Odstranil jsem i externi pull-up z modreho tlacitka. Jiny tam snad uz neni (uz si nejsem nicim jisty). Mam aktivni pouze UART2 a PC0-OUT bez         pul-up/down. Vse ostatni v analogovem modu. Zkousel jsem i nastavit hodiny pouze na MSI a ostanti hodiny vypnout, ale pod 200uA se stejne nedostanu. Zkousel jsem i vypnout hodiny pro vsechny GPIO (__GPIOD_CLK_DISABLE()) ale take bez uspechu.
>> 
>> Dokumentace je prachbidna nebo nevim kde hledat. Podle toho co jsem nasel v datasheetu, specifikaci HALu a apnotes ci v par dostupnych poznamkach na netu by melo byt vse spravne, ale nekde delam zrejme chybu. 
>> 
>> Za kazde nakopnuti spravnym smerem budu neskonale vdecny jelikoz se s tim trapim uz vice nez tyden do hlubokych noci az ran a zatim bez zadneho uspechu. Proste se uz tocim jen dokola.
>> 
>> Zde je priklad meho prechodu do stop modu:
>> 
>> ...
>> HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, stopTime, RTC_WAKEUPCLOCK_RTCCLK_DIV16);
>> HAL_SuspendTick();
>> HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI);
>> SystemClock_Config();
>> HAL_ResumeTick();
>> ...
>> 
>> Jedna z konfiguraci hodin:
>> 
>> RCC_OscInitTypeDef RCC_OscInitStruct;
>> RCC_ClkInitTypeDef RCC_ClkInitStruct;
>> RCC_PeriphCLKInitTypeDef PeriphClkInit;
>> 
>> /* Enable Ultra low power mode */
>> HAL_PWREx_EnableUltraLowPower();
>> 
>> /* Enable the fast wake up from Ultra low power mode */
>> //HAL_PWREx_EnableFastWakeUp();
>> 
>> __PWR_CLK_ENABLE();
>> 
>> __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
>> 
>> RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_LSE;
>> RCC_OscInitStruct.LSEState = RCC_LSE_ON;
>> RCC_OscInitStruct.HSIState = RCC_HSI_ON;
>> RCC_OscInitStruct.HSICalibrationValue = 16;
>> RCC_OscInitStruct.LSIState = RCC_LSI_ON;
>> RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
>> RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
>> RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL3;
>> RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV4;
>> HAL_RCC_OscConfig(&RCC_OscInitStruct);
>> 
>> RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
>> RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
>> RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV4;
>> RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
>> RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
>> HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
>> 
>> PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
>> PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
>> HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
>> 
>> //HAL_RCCEx_EnableLSECSS();
>> 
>> HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000);
>> 
>> HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
>> 
>> /* SysTick_IRQn interrupt configuration */
>> HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
>> 
>> 
>> Turby
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20160321/db8966d5/attachment.html>


Další informace o konferenci Hw-list