摩尔芯闻 > 行业新闻 > 半导体 > stm8s和stm8l低功耗对比

stm8s和stm8l低功耗对比

eefocus ·2020-03-25 00:00·电子工程世界
阅读:1668

在低功耗应用中,一般来说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 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
分享到:
微信 新浪微博 QQ空间 LinkedIn

上一篇:新特联合清华大学苏州汽车研究院加码智能汽车研发

下一篇:移动无线Wi-Fi设备产品在疫情期间需求暴涨

打开摩尔直播,更多新闻内容
半导体大咖直播分享高清观看
立即下载