打印
[应用相关]

STM32L152在stop模式下的低功耗设计

[复制链接]
803|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yyller|  楼主 | 2020-9-3 17:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

        在ST官网的STM32L152RE芯片介绍上明确有说明此芯片在stop模式下可以达到560nA,纳安!并且还可以支持16个外部中断唤醒。

       

        真的这么强!下面来验证一下。

        采用NUCLEO-L152板子进行验证,使用CubeMx生成工程代码。

        在CubeMx中选择STM32L152RE这款芯片,pinout如下设置:

       

        如上图,只是简单地将PC13,PB9,PB5,PB4,PD2,PA12,PB15,PB1设置为外部中断。

        为了得到最低功耗,时钟树采用芯片内部时钟HSI:

       

        在configuration下,将GPIO都设置为下拉,PC13在NUCLEO板子上是按键,设为上拉。

       

        生成代码。main函数稍作修改:

        intmain(void)

        {

        /*USERCODEBEGIN1*/

        /*USERCODEEND1*/

        /*MCUConfiguraTIon----------------------------------------------------------*/

        /*Resetofallperipherals,IniTIalizestheFlashinterfaceandtheSysTIck.*/

        HAL_Init();

        /*Configurethesystemclock*/

        SystemClock_Config();

        /*IniTIalizeallconfiguredperipherals*/

        MX_GPIO_Init();

        /*USERCODEBEGIN2*/

        HAL_PWREx_EnableUltraLowPower();

        HAL_PWREx_EnableFastWakeUp();

        /*USERCODEEND2*/

        /*Infiniteloop*/

        /*USERCODEBEGINWHILE*/

        while(1)

        {

        /*USERCODEENDWHILE*/

        /*USERCODEBEGIN3*/

        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);

        /*Configuressystemclockafterwake-upfromSTOP:enableHSI,PLLandselect

        PLLassystemclocksource(HSIandPLLaredisabledautomaticallyinSTOPmode)*/

        SystemClockConfig_STOP();

        HAL_Delay(200);

        }

        /*USERCODEEND3*/

        }

        SystemClockConfig_STOP函数如下配置:

        staticvoidSystemClockConfig_STOP(void)

        {

        RCC_ClkInitTypeDefRCC_ClkInitStruct={0};

        RCC_OscInitTypeDefRCC_OscInitStruct={0};

        /*EnablePowerControlclock*/

        __HAL_RCC_PWR_CLK_ENABLE();

        /*Thevoltagescalingallowsoptimizingthepowerconsumptionwhenthedeviceis

        clockedbelowthemaximumsystemfrequency,toupdatethevoltagescalingvalue

        regardingsystemfrequencyrefertoproductdatasheet.*/

        __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

        /*PollVOSFbitofinPWR_CSR.Waituntilitisresetto0*/

        while(__HAL_PWR_GET_FLAG(PWR_FLAG_VOS)!=RESET){};

        /*GettheOscillatorsconfigurationaccordingtotheinternalRCCregisters*/

        HAL_RCC_GetOscConfig(&RCC_OscInitStruct);

        /*Afterwake-upfromSTOPreconfigurethesystemclock:EnableHSIandPLL*/

        RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSI;

        RCC_OscInitStruct.HSEState=RCC_HSE_OFF;

        RCC_OscInitStruct.HSIState=RCC_HSI_ON;

        RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;

        RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSOURCE_HSI;

        RCC_OscInitStruct.HSICalibrationValue=RCC_HSICALIBRATION_DEFAULT;

        RCC_OscInitStruct.PLL.PLLMUL=RCC_PLL_MUL6;

        RCC_OscInitStruct.PLL.PLLDIV=RCC_PLL_DIV3;

        if(HAL_RCC_OscConfig(&RCC_OscInitStruct)!=HAL_OK)

        {

        Error_Handler();

        }

        /*SelectPLLassystemclocksourceandconfiguretheHCLK,PCLK1andPCLK2

        clocksdividers*/

        RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_SYSCLK;

        RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;

        if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_1)!=HAL_OK)

        {

        Error_Handler();

        }

        }

        编译烧录后使用电流表进行测试

       

        0.3uA! 看来所言非虚,300nA,按下按键,发现电流变大了,如下:

       

        电流变为11mA,这个位为工作电流,这说明外部中断生效了。

        STM32L152在低功耗这块,确实还不错!实测stop模式下300nA的电流,比手册上所示的560nA还低,看来ST还是比较保守。

使用特权

评论回复
沙发
quickman| | 2020-9-12 22:48 | 只看该作者
如何创建stm32l051工程  

使用特权

评论回复
板凳
jstgotodo| | 2020-9-12 22:48 | 只看该作者
谢谢楼主的资料。            

使用特权

评论回复
地板
iamaiqiyi| | 2020-9-12 22:48 | 只看该作者
stm32l0系列与stm32l1系列通用吗  

使用特权

评论回复
5
dzfansman| | 2020-9-12 22:48 | 只看该作者
STM32L和STM32F的程序可以相互移植吗  

使用特权

评论回复
6
sanxingnote7| | 2020-9-12 22:48 | 只看该作者
STM32L152VBT6是单片机还是ARM  

使用特权

评论回复
7
backlugin| | 2020-9-12 22:49 | 只看该作者
STM32L与STM32的固件库相同吗?  

使用特权

评论回复
8
sdCAD| | 2020-9-12 22:49 | 只看该作者
STM32L系列         

使用特权

评论回复
9
fengm| | 2020-9-12 22:49 | 只看该作者
此器件非常适合于设计相对简单、经济实惠的超低功耗的电池供电   

使用特权

评论回复
10
updownq| | 2020-9-12 22:50 | 只看该作者
低功耗的性能优势还是比较大。  

使用特权

评论回复
11
sanfuzi| | 2020-9-12 22:50 | 只看该作者
STM32L0定位于STM32L1和STM8L的  

使用特权

评论回复
12
iamaiqiyi| | 2020-9-12 22:50 | 只看该作者
stm32l051和stm32l151哪个好  

使用特权

评论回复
13
jstgotodo| | 2020-9-12 22:50 | 只看该作者
              

使用特权

评论回复
14
dzfansman| | 2020-9-12 22:50 | 只看该作者
STM32L152的内部MSI晶振为什么偏差这么大  

使用特权

评论回复
15
quickman| | 2020-9-12 22:50 | 只看该作者
stm32l功耗多少  

使用特权

评论回复
16
fengm| | 2020-9-12 22:50 | 只看该作者
使用的人确实较少,资料也不是很多  

使用特权

评论回复
17
sdCAD| | 2020-9-12 22:50 | 只看该作者
STM32L0x0 内置高达 128 KB 的 Flash、高达 20 KB 的 RAM 和高达 512 字节的片内 EEPROM。  

使用特权

评论回复
18
updownq| | 2020-9-12 22:50 | 只看该作者
STM32 L051待机模式低功耗400uA   

使用特权

评论回复
19
backlugin| | 2020-9-12 22:50 | 只看该作者
STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的

使用特权

评论回复
20
sanfuzi| | 2020-9-12 22:50 | 只看该作者
学习使用STM32L系列单片机。   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

132

主题

241

帖子

1

粉丝