你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 11317|回复: 14

[STM32L476] 【NUCLEO-L476RG开发】STM32L476低功耗模式初试

[复制链接]

1

主题

31

回帖

0

蝴蝶豆

中级会员

最后登录
2020-7-11
发表于 2015-12-4 08:43:32 | 显示全部楼层 |阅读模式

【NUCLEO-L476RG开发】STM32L476低功耗模式初试

   在项目开发中经常用到低功耗MCU芯片,今用st币换到了一块STM32L476RG-NUCLEO开发板,由于本人对STM32CubeMx和
HAL库不熟悉,没有使用过,但对此板的低功耗比较感兴趣,还是花时间看了一点资料,好不容易完成了这个初步试验,先发表
这个简单的开发笔记,待以后更熟悉STM32CubeMx,HAL库和STM32L478后,再发一个比较全的开发笔记。
(一)STM32L476的低功耗模式总结:
  该器件具有以下几个低功耗模式:
    1. 睡眠模式(Sleep mode):CPU时钟关,所有的外设包括Cortex-M4核心外围设备象NVIC,SysTick,等能够唤
        醒CPU在中断或事件发生。
   
    2. 低功耗运行模式(Low-power run mode):这个模式是在当系统时钟频率为减少2兆赫以下时实现的。代码是
        从SRAM或闪存执行。稳压器是在低功耗模式,以尽量减少调节器的工作电流。
    3. 低功耗睡眠模式(Low-power sleep mode):这个模式从低功率运行模式进入:Cortex-M4是关闭的。
    4. STOP1和STOP2模式:SRAM1,SRAM2和所有寄存器内容被保留。所有在电压域VCORE的时钟停止,PLL,MSI,
        与HSI16和HSE是失能停止的。LSI和LSE可以保持运行。RTC可保持活跃。一些外围设备在停止模式检测唤醒
        条件。使用唤醒能力,可以使能HSI16 RC振荡器。
     在STOP2模式,大多数的电压域VCORE放在一个较低的泄漏模式。
        在STOP1模式,提供最大数量的活动外设和唤醒源,较小的唤醒时间但比STOP2功耗高。
        当从STOP1模式或STOP2模式退出时,系统时钟是MSI可到48MHz或使用HSI16,根据软件配置。
     5.待机模式(Standby mide):VCORE电压域断电。然而,它是可以保存SRAM2内容:
        –待机模式时 当寄存器PWR_CR3的RRS位是置"1"时,SRAM2保留内容,在这种情况下,SRAM2由低功耗
                     稳压器提供。
                     当寄存器PWR_CR3的RRS位清零时,在这种情况下,主电压稳压器和低功率稳压器被关断。
                     在VCORE电压域的所有时钟停止,PLL,MSI,HSI16和HSE被禁用。LSI和LSE可以保持运行。
                     RTC保持活跃。当退出待机模式时,系统时钟是MSI从1兆赫至8兆赫。
 6. 关机模式(Shutdown mode):VCORE电压域断电。在VCORE电压域所有的时钟停止,
                                
                                   PLL,MSI,HSI16,LSI和HSE被禁用。LSE保持运转。
                                   退出关机模式时,系统时钟是MSI在4兆赫。
                                   在这种模式下,电源电压监测被禁用。

  各低功耗模式之间的转换见下图:

                      L4_1.jpg

(二)实验内容及工程的建立:

  1.本人主要想对低功耗运行模式和低功耗模式睡眠模式进行实验测试,根据各低功耗模式之间转换图,程序的方框图如下:

                  
                                        main.jpg


       为了完成上面步骤,利用STLink的USB转串口功能,在程序中设计了USART2的响应,制定了一个简单的协议,
  协议命令为二字节,通过STLink的USB转发送到USART2,协议具体如下:
   发送 : 0x08 0x02  由主模式进入低功耗运行模式。系统频率使用MSI,频率降为1MHz。
  
       发送 : 0x08 0x03  由低功耗运行模式进入主模式。系统频率使用HSI16,配置为80MHz。
   在低功耗运行模式下 发送 : 0x08 0x08 由低功耗运行模式进入低功耗睡眠模式。

   UART2命令响应代码如下:

void U2_cmd(void)
{
if(__HAL_UART_GET_FLAG(&huart2, UART_FLAG_RXNE) != RESET)  
if(HAL_UART_Receive(&huart2,U2_Rxbuf,2,100)==HAL_OK)
   {
  
     if((U2_Rxbuf[0]==0x08)&&(U2_Rxbuf[1]==0x01))//====主模式
      {
      SysTick->CTRL  |= SysTick_CTRL_ENABLE_Msk;
     
     MX_USART2_UART_Init();
        U2_buf[0]=0x09;  U2_buf[1]=0x01;
       HAL_UART_Transmit(&huart2,U2_buf,2,100);
     }
   if((U2_Rxbuf[0]==0x08)&&(U2_Rxbuf[1]==0x02))//====进入低功耗运行模式
      {  
         //进入低功率运行模式,进行如下几步:
         //降低系统时钟频率低于2兆赫。
         //通过设置在PWR_CR1寄存器的LPR位,强迫调节器在低功耗模式。
   
     SystemClock1M();
     MX_USART2_UART_Init();
     SET_BIT(PWR->CR1, PWR_CR1_LPR);
     
        U2_buf[0]=0x0A;  U2_buf[1]=0x02;
       HAL_UART_Transmit(&huart2,U2_buf,2,100);
     }
   if((U2_Rxbuf[0]==0x08)&&(U2_Rxbuf[1]==0x03))//====退出低功耗运行模式进入主模式
      {
         //退出低功耗运行模式,进行如下几步:
         //通过清除在PWR_CR1寄存器的LPR位,强迫调节器在主运行模式。
         //等待直到PWR_SR2寄存器的REGLPF清零。
         //提高系统时钟频率,恢复主运行模式的时钟频率。

     CLEAR_BIT(PWR->CR1, PWR_CR1_LPR);
     while(HAL_IS_BIT_SET(PWR->SR2,PWR_SR2_REGLPF));   //HAL_IS_BIT_CLR(REG, BIT);
     SystemClock80M();
     MX_USART2_UART_Init();
     
     
        U2_buf[0]=0x0B;  U2_buf[1]=0x03;
       HAL_UART_Transmit(&huart2,U2_buf,2,100);
     }
   if((U2_Rxbuf[0]==0x08)&&(U2_Rxbuf[1]==0x08)) //====进入睡眠模式
      {
     SysTick->CTRL  &= ~SysTick_CTRL_ENABLE_Msk; //禁止系统中断
     HAL_NVIC_DisableIRQ(LPTIM1_IRQn);
     HAL_NVIC_DisableIRQ(TIM1_UP_TIM16_IRQn);  //禁止TIM1中断   
     
     HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI);     
         
        U2_buf[0]=0x0D;  U2_buf[1]=0x08;
       HAL_UART_Transmit(&huart2,U2_buf,2,100);
     }
   }
}

      
  2.工程的建立:

   工程在STM32CubeMx中建立配置了一个LPTIM1,一个TIM1, 三个UART分别为PUART1,UART2,UART4见下图:

       Cube1.jpg


       时种配置见下图:

       Cube2.jpg

      
   引脚配置见下图:
       Cube3.jpg

整个工程文件见附件:
    My_L476_1.rar (9.12 MB, 下载次数: 500)
DL2.JPG

评分

参与人数 1ST金币 +30 收起 理由
沐紫 + 30

查看全部评分

<
回复

使用道具 举报

7

主题

912

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-7-4
发表于 2015-12-4 11:11:36 | 显示全部楼层
貌似这个万用表的精度不够吧
stmcu.org.png
回复 支持 反对

使用道具 举报

1

主题

902

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-12-7
发表于 2015-12-4 13:27:42 | 显示全部楼层
那个模块图画的很好。就是“各低功耗模式之间的转换”,用什么软件画的?
回复 支持 反对

使用道具 举报

3

主题

60

回帖

2

蝴蝶豆

金牌会员

最后登录
2020-10-20
发表于 2015-12-4 15:12:54 | 显示全部楼层
换个微安档的表测,这数据不大对
回复 支持 反对

使用道具 举报

9

主题

233

回帖

0

蝴蝶豆

金牌会员

最后登录
2018-3-23
发表于 2015-12-4 16:42:47 | 显示全部楼层
跟手册上的数据对比如何?
回复 支持 反对

使用道具 举报

307

主题

3125

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
发表于 2015-12-4 17:32:43 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

47

主题

1636

回帖

7

蝴蝶豆

论坛元老

最后登录
2020-10-28
发表于 2015-12-4 18:08:08 | 显示全部楼层
学习了。。。
回复 支持 反对

使用道具 举报

10

主题

1651

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-2-15
发表于 2015-12-5 11:55:19 | 显示全部楼层
再接再厉。
回复 支持 反对

使用道具 举报

1

主题

20

回帖

0

蝴蝶豆

中级会员

最后登录
2018-2-10
发表于 2017-4-9 11:55:09 | 显示全部楼层
很好地帖子
回复 支持 反对

使用道具 举报

1

主题

5

回帖

0

蝴蝶豆

初级会员

最后登录
2018-7-30
发表于 2018-1-3 18:23:12 | 显示全部楼层
楼主,这个功耗还是很大呀
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版