发新帖本帖赏金 5.00元(功能说明)我要提问
返回列表
打印
[STM32L0]

评测NUCLEO-L073RZ低功耗设计方法及测试

[复制链接]
1284|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rooney30|  楼主 | 2016-3-18 22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文将分三部分介绍评测NUCLEO-L073RZ:
1STM32L0独具的低功耗结构特点
2,低功耗程序设计时注意的要点
   2.1  运行时降低功耗
   2.2  休眠时降低功耗
3,编写例程,测试开发板上的低功耗性能(包括功耗及唤醒响应时间)
     3.1  使用的硬件资源
     3.2  软件相关,包括使用操作(软件功能说明,源码在最后附件中,就不单独贴出详细描述,有疑问可以跟贴回复)
     3.3  5种模式(run , run_sleep, low power run , low power sleep, stop with rtc(3V))下带固定几种外设(adc,systick,lptime,gpio)的功耗。
              以上各模式下响应外部中断的时间。
         新手评测,欢迎拍砖,如果大家还需了解什么,跟贴回复,尽量按大家要求多做测试。
               
        NUCLEO-L073RZ是基于STM32L0超低功耗系列芯片STM32L073RZT6设计的一款评估板。该系列显著的低功耗性能也算是MCU行业的的绞绞者。官方给出数据,低功耗运行模式(Low power run) 8.55uA , 停止模式(Stop with RTC)0.82uA, 待机模式(Standby) 290 nA,功耗直逼MSP430
  STM32L系列内核是基于Cortex-M0+的高性能32位微控制器。在低功耗应用中,MCU总有段时间需要唤醒完成一系列任务,这样可以快速处理完任务,以最大化的休眠时间进入休眠模式,也是一种降低功耗的办法,通常在执行任务时的电流消耗是休眠状态的几十,甚至几百倍。在拥有低功耗的同时,又能运行高性能模式,完成数据采集,算法处理等一系列应用 。是对STM8L系列的补充。所以TI公司也推出MSP432系列基于Cortex-M0内核的低功耗产品。

沙发
Rooney30|  楼主 | 2016-3-18 22:34 | 只看该作者
1STM32L0独具的低功耗结构特点
                1). Cortex-M0+   提供一系列领先的性能和程序容量。在大多数低功耗设计中采用的,尽最大努力减少唤醒后的运行时间,争取更多的休眠时间达到降低功耗的目的。按mA/DMIPS考虑,Cortex-M0+优于其他架构,特别对比于16MCU
     2). Voltage regulator 可动态管理内核电压Vcore,根据性能,功耗的平衡来降低电流消耗。在降低内核电压的同时,频率也必须满足相应的要求。
              
              

     3). 多种时钟源选择 独有的HSI16,HSI48,MSI时钟,用于复位时及stop,standby模式唤醒后使用,及低功耗运行模式的时钟源(MSI)。其中,MSI作为内部超低功耗的内部RC时钟源,可配置:65.536 kHz, 131.072 kHz, 262.144 kHz, 524.288 kHz, 1.048 MHz,2.097 MHz (default value) and 4.194 MHz,根据以最低功耗满足性能需求的原则合理降低运行时的功耗。
            
             4).    Numerous low power modes 多种低功耗模式(即休眠模式),low power run模式除外。低功耗设计中,通常尽快执行完任务,让CPU处于空闲状态后,进入休眠模式,以节约电源。不同的休眠模式,将关闭相应的外设及内核,达到降低功耗的目的。
            
           5).      一系列独有的低功耗外设
A pair of ultra-low power comparators   用于管理模拟电压,并可以做为低功耗模式的唤醒设置(当检测到外部电压达到设置范围),仅3uA的电流消耗。
RTC peripheral 可以在内核处于电流消耗最少的待机模式下唤醒,可做为实时时钟,通常电池供电的手持设备,需要借此外设维护系统时钟等信息,功耗极低。1uA以下。
versatile LCD controller  专用的LCD控制器,5uA的消耗,不包含LCD的电流。
Low power timer (LPTIM),LPUART 不同于常规的MCU,独有的低功耗外设,实现定时,串口。另I2C,USART在使用HSI16驱动时,可把MCUstop模式下唤醒。

使用特权

评论回复
板凳
Rooney30|  楼主 | 2016-3-18 22:35 | 只看该作者
2,低功耗程序设计时注意的要点
微控制器程序设计时,影响最大的因素是:电压和频率。高性能的处理效率和低功耗相互茅盾,难度在于平衡时间和功耗以达到最低的功耗(相当于程序设计思路权衡,唤醒时间间隔及唤醒后以多高的性能运行,以达到最快的结束算法,降低平均功耗)。本文只描述降低芯片自身的功耗,在产品中,整体功耗有关原理的设计,各功能的外围电路应用MOS电路能使能或关断相应的电源电路以降低功耗。
  2.1  运行时降低功耗
   1).根据运行时需处理的任务实时性,算法复杂度,选取合适的内核电压和频率。降低运行时的平均功耗。
   2).除了上途选择合适的电压频率,在突发式需大量处理数据时,可根据需要动态调整电压频率以降低功耗或提升性能。
   3).可以考虑使用low power run的运行模式。
   4).关闭不使用或暂时不需要用到的外设时钟
   5).降低不需要高频率运行的外设频率,如定时器、ADC1MSps300uA,10KSps时仅几十uA)等。
   6).定时器,串口尽量使用专门设计的低功耗的LPTIM,LPUART。ADC也有特殊的低功耗处理模式
   2.2  休眠时降低功耗
   1).合理设计休眠时间,满足需求情况下,最大程度休眠。
   2).休眠期间可选择关断FLASH,内核等不同的休眠模式,但牺牲的是唤醒的实时性。
   3).休眠时间较长,可选择关闭所有外设时钟。
   4).除了上述关闭时钟,有些外设还需要禁能(如ADC,关闭后,可以关闭模式电源)
   5).IO口配合外围电源,切断或减小外部电路的消耗(通常此时不需要响应的,不用IO调成内部上拉,并关闭时钟)。
3低功耗测试
本次功耗测试,在run,low power run模式下,均运行adcsystick,usart,gpio button。官方给出的功耗,在low power run模式下只有button,systick,实际运行的时刻不可能不运行其他东西。另外,测试时无法避免外围器件上的一点点电流消耗,所以此次测得的功耗可能会相对官方给出的偏一些。
3.1使用的硬件资源
上述图中JP6可以断开MCU供电,所以拿掉跳丝帽,串入电流表即可测得电流。
上图的BUTTON接在PC3口上,用于外部中断,把MCU从各种低功耗模式唤醒,切换至高速的RUN模式。

使用特权

评论回复
地板
Rooney30|  楼主 | 2016-3-18 22:38 | 只看该作者
上图中的PA2,PA3连接至STLINK,用于串口发送至PC,调试程序用。进入各种低功耗模式的命令,均由串口发送。
上图中的PA0,用于ADC的输入引脚。这样几个需要用到的IO全在PA口上,减少了APB时钟使用,降低部分功耗。
PA1引脚用于外部中断后拉低,测量各模式下响应中断的时间.
3.2  软件相关,只作功能说明,源代码请下载附件,如需详细说明,后续交流
评测时间有限不能深究芯片资源,测试时把官方提供的例程做些功能整合。
3.2.1 高速RUN模式下,SYSCLK(Hz) 2M HCLK(Hz) 2MMain regulator output voltage  = Scale2 mode,
3.3.2 low power mode ,SYSCLK(Hz) 64kHCLK(Hz) 32kAD采样频率减半,串口波特率没调出来,所以不发串口数据,但时钟仍在全能状态
3.2.3 串口9600,每间隔100ms向外发送一个字符,每5秒发送命令提示信息,详细见下图
3.3.4 ADC 10ms轮询测试一次。

使用特权

评论回复
5
Rooney30|  楼主 | 2016-3-18 22:39 | 只看该作者
3.3.5 BUTTON用于外部中断输出,把MCU从各低功耗模式下唤醒,进入高速RUN模式。
       3.3.6 PA1引脚,串口接收正确指令进入低功耗模式后输出高,当响应外部中断,立即输出低,用于测试响应外部中断的时间。
   
              上图H代表高速运行模式每100ms打印一个。几种模式进入的命令代码,第5s打印一次。AD值每10ms轮询一次。

    3.4  5种模式(run , run_sleep, low power run , low power sleep, stop ,standby)下带固定几种外设(adc,systick,usart,gpio,EXIT)的功耗。
以上各模式下响应外部中断的时间,由于BUTTON去抖的电容太大,导致上升沿太慢,无法确定触发中断的时间点,所以测不出来,示波器图片请见最后一幅(可以说明问题),如需测试,需提供一纯方波信号换引脚,暂时不方便测,后续补上
Low power run Low power sleep 时钟为32k,其他模式核心时钟均为2MVcore均为 等级2,所有测试图片及例程请见最后 。
   
     run           568.1 uA  功能状态请见3.2软件说明。
     run sleep       213.22uA  感觉SLEEP模式有点偏大,都休眠了,CPU不能执行任务
                         感觉此模式**肋,功耗不低,还不如使用low power run或low power sleep.
     low power run    24.85uA   低速执行任务状态,仍能执行指令,居然比SLEEP还低这么多。
                         此模式,串口波特率无法调,所以关闭串口打印,但串口时间和外设均使能
                         需要实时检测响应,又想尽量降低功耗时使用
     low power sleep   4.55uA   
     stop          1.13uA   功耗比手册稍大(可优化程序),官方例程经过测试,与手册一至
                         我的IO口没有切成模拟输出,个人认为在此模式应该保持IO口状态,根据应用的需要。
                         通常还需要存储当前的状态,唤醒后继续执行任务时使用
     standby        0.26uA   此模式唤醒直接复位,无响应中断的时间,通
                         常无法断电的手持设备,待机时使用

使用特权

评论回复
6
Rooney30|  楼主 | 2016-3-18 22:53 | 只看该作者
以下是测试的图片
        
        
        
        
        
        
        
        示波器 1ms每格,蓝线是按键,黄线是中断后拉低PA1口,用户按键下降沿触发中断,几乎无法断定什么时候触发中断,此次测试失败。暂时不方便另添加比较纯净的触发信号,按键肯定不行,如果不滤波,毛刺太大。

使用特权

评论回复

打赏榜单

dirtwillfly 打赏了 5.00 元 2016-03-19
理由:不错的低功耗测评

7
dirtwillfly| | 2016-3-19 17:14 | 只看该作者
Rooney30 发表于 2016-3-18 22:53
以下是测试的图片                                                                示波器 1ms每格,蓝线 ...

5位的万用表,不错

使用特权

评论回复
8
kingjie0210| | 2016-6-3 14:02 | 只看该作者
程序在哪儿没找到,刚买了一板子,想下载个例程跑跑试试

使用特权

评论回复
发新帖 本帖赏金 5.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

117

帖子

3

粉丝