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

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

[复制链接]
pingis58 发布时间:2016-3-11 19:52
本文将分三部分介绍评测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)的功耗。
              以上各模式下响应外部中断的时间。
         新手评测,欢迎拍砖,如果大家还需了解什么,跟贴回复,尽量按大家要求多做测试。
                图片1.png
        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内核的低功耗产品。
  1STM32L0独具的低功耗结构特点
                1). Cortex-M0+   提供一系列领先的性能和程序容量。在大多数低功耗设计中采用的,尽最大努力减少唤醒后的运行时间,争取更多的休眠时间达到降低功耗的目的。按mA/DMIPS考虑,Cortex-M0+优于其他架构,特别对比于16MCU
     2). Voltage regulator 可动态管理内核电压Vcore,根据性能,功耗的平衡来降低电流消耗。在降低内核电压的同时,频率也必须满足相应的要求。
               图片2.png
               图片3.png

     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.png
             4).    Numerous low power modes 多种低功耗模式(即休眠模式),low power run模式除外。低功耗设计中,通常尽快执行完任务,让CPU处于空闲状态后,进入休眠模式,以节约电源。不同的休眠模式,将关闭相应的外设及内核,达到降低功耗的目的。
             图片5.png
           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模式下唤醒。
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使用的硬件资源
图片6.png
上述图中JP6可以断开MCU供电,所以拿掉跳丝帽,串入电流表即可测得电流。
图片7.png
上图的BUTTON接在PC3口上,用于外部中断,把MCU从各种低功耗模式唤醒,切换至高速的RUN模式。
图片8.png
上图中的PA2,PA3连接至STLINK,用于串口发送至PC,调试程序用。进入各种低功耗模式的命令,均由串口发送。
图片9.png
上图中的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轮询测试一次。
3.3.5 BUTTON用于外部中断输出,把MCU从各低功耗模式下唤醒,进入高速RUN模式。
       3.3.6 PA1引脚,串口接收正确指令进入低功耗模式后输出高,当响应外部中断,立即输出低,用于测试响应外部中断的时间。
    图片10.png
              上图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   此模式唤醒直接复位,无响应中断的时间,通
                         常无法断电的手持设备,待机时使用。
    以下是测试的图片
         run.jpg
         sleep.jpg
         lowpower.jpg
         lowsleep.jpg
         stop.jpg
         standby.jpg
         示波.jpg
        示波器 1ms每格,蓝线是按键,黄线是中断后拉低PA1口,用户按键下降沿触发中断,几乎无法断定什么时候触发中断,此次测试失败。暂时不方便另添加比较纯净的触发信号,按键肯定不行,如果不滤波,毛刺太大。家里没示波器,抽空 中午在公司测(得下周),待后续再做测试给大家补上,时间有限。
       源代码: UART_TwoBoards_ComPolling.rar (2.77 MB, 下载次数: 313)

评分

参与人数 1 ST金币 +20 收起 理由
zero99 + 20

查看全部评分

收藏 5 评论11 发布时间:2016-3-11 19:52

举报

11个回答
lisingch 回答时间:2016-3-11 20:30:29
不错,收藏慢慢学习。
那片清茶 回答时间:2016-3-11 20:45:24
楼主不错,做低功耗主要是不是要让所有的外设引脚不要有电平差,不然就耗电。
zcl201207 回答时间:2016-3-11 20:50:01
pingis58 回答时间:2016-3-12 08:44:24
那片清茶 发表于 2016-3-11 20:45
楼主不错,做低功耗主要是不是要让所有的外设引脚不要有电平差,不然就耗电。 ...

分:
1,降低MCU外围功耗,要实现的功能,没有电流是不可能的。尽量加限流电阻,用弱上拉等,尽量在长时间会处于的电平状态,设计成无电流(或微小的电流)
2,降低芯片自身的,不用的引脚通常是置成模拟输入状态,也就是高阻,然后禁止时钟。
loyi 回答时间:2016-3-14 09:58:48
bucuo
秋而实之 回答时间:2016-3-24 13:22:53
刚刚拿到同款板子,还没来得及测试,学一下楼主怎么测试
qingyu_lv 回答时间:2016-11-5 15:22:14
楼主威武,留个qq呗,方便想你学习
qingyu_lv 回答时间:2016-11-5 16:01:51
zengyi703-16313 回答时间:2016-11-7 08:19:45
感谢分享
QWERT1321 回答时间:2017-10-29 11:12:38
楼主你好,我想请问一下帖子里面的关于多种时钟源选择和多种低功耗模式的两张图片是在哪个文档里面找到的?
科维小龙 回答时间:2018-10-29 14:20:05
感谢分享

所属标签

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