stm8s和stm8l低功耗对比

2020-03-25来源: eefocus关键字:stm8s  stm8l  低功耗对比

  在低功耗应用中,一般来说mcu是常态halt模式,然后偶尔被唤醒(外部中断或者内部定时唤醒)进入运行模式。所以对比低功耗性能,一般来说只需要对比run模式和halt下的功耗即可,因为项目选用的是通过内部定时器唤醒,所以选用active halt mode。以下是stm8s003和stm8l151在这两种模式下的功耗对比: 

run mode:

  •  stm8s

  

 

  •  stm8l

  

  • 对比

   在使用同样的16M内部RC振荡器情况下,stm8s 3.7ma,stm8l 3.54ma,两款mcu耗电量差不多。

active halt mode:

  • stm8s

  

 

  • stm8l

  

 

  • 对比

  在同样的关闭外设,且使用内部低速RC振荡器唤醒的情况下:stm8s 10ua,stm8l 0.54ua。大约有20倍的差距,不过对于要求不是特别高的情况下,ua级别的差距影响不会太大。

实测:

为了实际验证,分别将单片机焊接到空板子上编写代码进行测试。

stm8 编写如下代码:

32ms唤醒一次

主程序:

void main(void)
{
  CLK_HSECmd ( DISABLE );
  CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);

  AWU_DeInit();
  AWU_Init(AWU_TIMEBASE_32MS);
  CLK_SlowActiveHaltWakeUpCmd(ENABLE); //关闭活跃停机模式下的电压调节器(MVR)
  CLK_FastHaltWakeUpCmd(DISABLE); //关闭快速唤醒
  FLASH_SetLowPowerMode(FLASH_LPMODE_POWERDOWN); //设置为停机后flash掉电

  GPIO_Init(GPIOA,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);
  GPIO_Init(GPIOB,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);
  GPIO_Init(GPIOC,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW); 
  GPIO_Init(GPIOD,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW); 

  GPIO_WriteLow(GPIOA,GPIO_PIN_ALL);
  GPIO_WriteLow(GPIOB,GPIO_PIN_ALL);
  GPIO_WriteLow(GPIOC,GPIO_PIN_ALL);
  GPIO_WriteLow(GPIOD,GPIO_PIN_ALL);

  AWU_Cmd(ENABLE);

  while(1)
  {
  halt();
  } 
}

中断处理程序:

INTERRUPT_HANDLER(AWU_IRQHandler, 1)
{
  /* In order to detect unexpected events during development,
 it is recommended to set a breakpoint on the following instruction.
  */
  u8 awu_temp = 0;
  awu_temp = AWU_GetFlagStatus();
}

 

 程序下载到单片机后,串到台式万用表上实测电流11ua,见下图:

stm8l 编写如下代码:

32ms唤醒一次

主程序:

void main(void)

{

  GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
  GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
  GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
  GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); 
  GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
  GPIO_Init(GPIOF, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);

  GPIO_Write(GPIOA,0x00);
  GPIO_Write(GPIOB,0x00);
  GPIO_Write(GPIOC,0x00);
  GPIO_Write(GPIOD,0x00);
  GPIO_Write(GPIOE,0x00);
  GPIO_Write(GPIOF,0x00);

  RTC_DeInit(); //初始化默认状态 
  CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); //允许RTC时钟 
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1); // 38K/1 
  RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div2); //38/2=19K
  RTC_SetWakeUpCounter(19*32); //19*32 32ms
  RTC_ITConfig(RTC_IT_WUT, ENABLE); //开启中断
  PWR_FastWakeUpCmd(DISABLE); //关闭快速唤醒功能

  PWR_UltraLowPowerCmd(ENABLE);//超低功耗
  RTC_WakeUpCmd(ENABLE);

  while(1)

  {

  halt();

  }

}

中断处理程序:

INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler,4)
{
  /* In order to detect unexpected events during development,
  it is recommended to set a breakpoint on the following instruction.
  */

  RTC_ClearITPendingBit(RTC_IT_WUT);
}

 

将程序下载到单片机后,串到台式万用表测试电流在4ua左右,见下图:

关键字:stm8s  stm8l  低功耗对比 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492523.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8S介绍(编程环境、烧录、芯片内容)
下一篇:STM8固件库+IAR 之--环境

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8s外部时钟晶振失效时钟安全系统CSS启动演示
使用的最小系统晶振是8m的。这里说下配置过程:时钟自动切换,开启切换中断在中断里面清除中断标志,使能CSS并开启CSS中断CSS中断发生,清除CSS中断标志,将HSI二分频,即16M/2=8M,与外部晶振相同,这样不会影响串口波特率窗口输出配置信息:用手触碰PA1、PA2引脚使外部晶振失效串口输出CSS中断
发表于 2020-03-09
STM8s外部时钟晶振失效时钟安全系统CSS启动演示
STM8S103之时钟设置
最大时钟(指的是system clock):外部晶振24MHz,内部高速RC16MHz三个时钟源:外部晶振、内部高速RC(上电默认) +内部低速RC几个时钟:master clock(即sytem clock),fcpu,外设时钟、AWU时钟调用库函数中CLK_ClockSwitchConfig,参考库函数clk_clockselection,但是分频还得进一步设置上电默认:内部高速RC,HSIDIV=/8,CPUDIV=/1,外部时钟全使能,查看相关寄存器的Reset value
发表于 2020-03-09
STM8S103之时钟设置
STM8S如何跑24M的HSE晶振
就这么几步,第一步: 检查STM8s.h头文件配置/**  * @brief  In the following line adjust the value of External High Speed oscillator (HSE)   used in your application   Tip: To avoid modifying this file each time you need to use different HSE, you        can define the HSE value in your
发表于 2020-03-08
STM8S开发入门之使用EWSTM8(IAR STM8S)新建工程点亮一个LED
1、预先安装好EWSTM8(IAR STM8)软件,全称为IAR Embedded Workbench for STMicroelectronics STM8 IDE2、下载好STM8S标准库,此处所用标准库为STM8S_StdPeriph_Lib V2.3.13、新建个文件夹(名称自定),作为项目所在文件夹,并在项目文件夹里再新建两个文件夹,此处分别命名为FWLIB和USER。(注:这两个文件夹名字可以按你们自己意思取,无限制,如可以取HWLIB、SYSLIB、MYLIB、MYAPP、MYABC、XZY等)4、将STM8S标准库(STM8S_StdPeriph_Lib V2.3.1)——Project
发表于 2020-03-08
STM8S开发入门之使用EWSTM8(IAR STM8S)新建工程点亮一个LED
STM8L052定时器1配置30S
@[TOC]STM8L TIM1相关配置Tim1基本介绍TIM1由一个由可编程预分频器驱动的16位上下自动重载计数器组成。定时器可用于多种用途,包括:•时基生成•测量输入信号的脉冲长度(输入捕获)•生成输出波形(输出比较,PWM和单脉冲模式)•各种事件的中断功能(捕获,比较,溢出,中断,触发)•捕获,比较,溢出事件的DMA请求功能•与其他定时器或外部信号同步(外部时钟,复位,触发可校准)。该定时器非常适用于各种控制应用,包括那些需要具有互补输出和死区时间插入的中心对齐PWM功能的应用。定时器时钟可以来自内部时钟,也可以来自可通过配置寄存器选择的外部源。配置以下代码 自己配置了一个30S定时器,使用系统内部高速时钟16M,1600
发表于 2020-03-06
STM8S触摸按键固件库详解
由于刚好有小项目需要用到触摸按键,stm8s可以节约一块触摸按键的片子,并且成本比较低。在某些对成本比较敏感的应用还是有价值的。现将自己网上找到的资料与自己学习的心得记下与大家分析。ST的底层库对滚动条也支持,效果还是不错的一、原理分析ST的电容式触摸按键方案通过一个电阻和感应电极的电容CX构成的阻容(RC)网络的充电/放电时间来检测人体触摸所带来的电容变化。如上图所示,当人手按下时相当于感应电极上并联了一个电容Cx,增加了感应电极上的电容,感应电极进行充放电的时间会增加,从而检测到按键的状态。先用开关将 Cs(或 Cs+Cx)上的电放尽,然后断开开关,让 R 给 Cs(或 Cs+Cx)充电,当没有手指触摸的时候, Cs 的充电
发表于 2020-03-05
STM8S触摸按键固件库详解
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved