STM8L151C8学习笔记5:低功耗

发布者:幸福时光最新更新时间:2022-01-12 来源: eefocus关键字:时钟  低功耗 手机看文章 扫描二维码
随时随地手机看文章

一、低功耗模式介绍

根据STM8L15X的数据手册,可以知道该芯片有5种低功耗模式,如下:


1.等待模式: CPU时钟停止,选择的外设可继续运行,内部或外部中断或复位信号都可退出等待模式(WFE或WFI模式)。


2.低功耗运行模式: CPU和选择的外设在运行,由低速RAM或低速振荡器(LSI或LSE)执行完成。停止了闪存(flash memory)和EEPROM数据存储器,配置稳压器为超低功耗模式。单片机可通过软件进入低功耗运行模式,也可通过软件或复位退出该模式。


3.低功耗等待模式: 在低功耗运行模式下执行等待事件时进入此模式。除了CPU时钟被停止了,它和低功耗运行模式差不多。单片机可通过复位或内部或外部事件(由定时器、串行接口DMA控制器(DMA1)、比较器和I/O端口生成的外设事件)触发唤醒此模式,当唤醒被其中一个事件触发时,系统会回到低功耗运行模式。


4.活跃停机模式: 除了RTC外,CPU和外设时钟停止。唤醒可由RTC中断、外部中断或复位触发。


5.停机模式: CPU和外设时钟停止,设备保持开机状态。RAM内容被保存,唤醒可由外部中断或复位来触发。一些外设也有从停止模式中唤醒的能力。可关闭内部参考电压来减少功耗。通过软件配置,也可在不等待内部参考电压唤醒时间的情况下唤醒设备,使其在5us后快速唤醒。

在这里插入图片描述

二、工程要求

1.低功耗模式,PB1口输入电压为0的时候,系统处于低功耗模式。


2.工作模式,PB1口输入电压大于某个值时,系统处于工作模式。


这里只是初步要求,后面可能要用RTC时钟来唤醒并发送信息(电池电量等)。


三、实现思路

初步思路:PB1对应的ADC采集口,一直处于开启状态,当采集值超过某个值时,唤醒进入工作模式,否则处于低功耗状态,但是从停机模式唤醒,这需要中断来触发。


而从数据手册得知,ADC中断无法唤醒Halt模式,所以这个思路行不通。

在这里插入图片描述

而在标准固件库看STM8的例程时,找到了一个通过COMP外设来唤醒的实例(COMP/COMP1_Halt):


This example shows how to configure the COMP peripheral to exit MCU from Halt mode. 

这个例子展示了如何配置COMP外围设备使MCU从Halt模式退出。

When the user presses the key push-button, the MCU enters Halt mode. 

当用户按下按键时,单片机进入停止模式。

And when the comparator 1 non inverting input (which is connected to the potentiometer) exceeds the internal reference voltage which is set to 1.22V,

当比较器1的非反相输入(连接到电位器)超过内部基准电压设置为1.22V时,

the comparator 1 causes the CPU to exit halt mode.

比较器1会使CPU退出halt模式。


COMP中断能够唤醒Halt模式,其中PB1也是连接至COMP1+的一个I/O口。

在这里插入图片描述

最终思路:利用COMP进行比较,比较器1的同相端(+)连接至PB1,反向端连接至 VREFINT ,其中 VREFINT 为内部基准电压1.22V,COMP1寄存器中CMP1OUT标志位:当非反相输入电压低于反相输入电压时,比较器1的输出低,该标志位为0;当非反相输入比反相输入电压高时,比较器1输出高,该标志位为1。所以我可以通过比较器输出标志来判断是否开启工作模式,而唤醒由COMP中断来完成,其触发方式为上升沿事件检测。

在这里插入图片描述

四、具体代码:

1.COMP1配置

根据数据手册中的Comparator block diagram和I/O groups and selection (continued),可知要想将PB1连接至COMP1+,将VREFINT 连接至COMP1-:


首先需要将PB1对应的I/O switches通道18打开。

在这里插入图片描述

接着开启模拟开关AS5和AS14,将PB1连接至COMP1+。


使能VREFINT 连接COMP1-的函数。


设置上升沿触发中断。

在这里插入图片描述

static void COMP_Config(void)

{

  /*PB1*/

  /* close the I/O switch number 4 */

  SYSCFG_RIIOSwitchConfig(RI_IOSwitch_18, ENABLE);

  /* close the analog switch number 14 */

  SYSCFG_RIAnalogSwitchConfig(RI_AnalogSwitch_14, ENABLE);

  /* close the analog switch number 1 */

  SYSCFG_RIAnalogSwitchConfig(RI_AnalogSwitch_5, ENABLE);

  /* Connect internal reference voltage to COMP1 inverting input */

  COMP_VrefintToCOMP1Connect(ENABLE);

  /* Enable COMP1 Interrupt */

  COMP_ITConfig(COMP_Selection_COMP1, ENABLE);

  /* Configure the event detection */

  COMP_EdgeConfig(COMP_Selection_COMP1, COMP_Edge_Rising);

}


2.工作模式切换

工作模式切换主要用了stm8l15x_comp.c中的COMP_GetOutputLevel()函数来判断当前处于什么状态,低功耗模式因为还没有仪器进行测量,现在只是单纯进入停机模式,可在停机前加上关闭所有外设,拉低所有I/O口等等操作,从停机模式唤醒后可以再对相应外设进行初始化。


这里需要注意的是:ADC和COMP1无法同时使用,因为它们共享同一组模拟开关,所以用到ADC的时候,需要关闭COMP,而停机前需关闭ADC,再开启COMP。


/**

  * @brief  Main program.

  * @param  None

  * @retval None

  */

void main(void)

{

   /* CLK configuration -------------------------------------------*/

  CLK_Config(); 

  /* Key button configuration */

  Key_Init();

  /* Initialize Leds,OLED */

  Led_Init();

  OLED_Init();

  OLED_Clear();

  OLED_ShowString(0,0,"  Hello World!");

   /* COMP configuration -------------------------------------------*/

  COMP_Config(); 

  /* Enable Interrupts */

  enableInterrupts();


  GPIO_SetBits(LED_PORT,LED2);

  /* Infinite loop */

  while (1)

  {

    if (COMP_GetOutputLevel(COMP_Selection_COMP1) == COMP_OutputLevel_High)

    {

    //工作模式:

      /* A rising edge is detected so the input voltage is over VREFINT

       and the ADC will be turned on for monitoring input voltage, the COMP2 will be off */

      GPIO_SetBits(GPIOA,GPIO_Pin_6);

       /* Toggle LDE1..4 */

      GPIO_ToggleBits(LED_PORT,LED2);

      /* Insert delay */

      Delay_ms(50);

      if(Flash_Flag)    LED_Flash();

      /*KEY*/

      Key_Function();

      /*DISPLAY*/

      System_Display();

    }

    else

    {

    //低功耗模式:

      //关闭所有外设(除了COMP),将所有IO口拉低,

      halt();

      //开启相关外设及初始化。

    }

    

  }

}


五、总结

现在还是初步探索STM8低功耗模式,STM8系列单片机主打的就是低功耗,这里面感觉学问还是挺多的,后面可能还有学一下RTC时钟唤醒停机模式(也就是活跃停机模式)。这次也提醒我,当思路遇阻时,可以看看官方固件库例程,所有的外设都有相应的例程,可以从其中来找到新的办法,如果只是对代码的一味地移植,学到的东西没有这条途径多,所以可以多看看数据手册和官方固件库中给的例程。


关键字:时钟  低功耗 引用地址:STM8L151C8学习笔记5:低功耗

上一篇:STM8L151C8学习笔记2:KEY驱动
下一篇:STM8L151C8学习笔记4:ADC驱动

推荐阅读最新更新时间:2024-11-24 10:20

stm32 低功耗下使用看门狗(不喂狗)
在项目中需要低功耗处理,而使用看门狗可以保证程序不会跑死。但使用看门狗有一个问题,打开看门狗以后关闭不了,必须一直喂狗进行操作,那有啥好的办法呢?狗是必须养的,养这条狗花费了我半天时间,在此记录。 我能想到的有两种方案: 一、 使用独立看门狗,在低功耗下唤醒进行喂狗操作后继续休眠。 该方法可以通过增大看门狗的时钟分频,最大256分频,即可达到最大限度的喂狗时间,如果按照40K的时钟来算,(1 / (40K / 256)) * 4096 = 26.2144S, 在二十多秒起来喂狗在功耗方面可以接受,这种方法比较简单,不过二十多秒需唤醒一次。 二、利用复位关闭看门狗,在低功耗下不进行喂狗操作 使用的前提是需要判断复
[单片机]
stm32 <font color='red'>低功耗</font>下使用看门狗(不喂狗)
S5PV210 时钟
CLOCK DOMAINS 时钟域 S5PV210 consists of three clock domains, namely, main system (MSYS), display system (DSYS), and peripheral system (PSYS) 时钟源 外部焊接: 1.XRTCXTI:实时时钟 2.XXTI:CPU时钟 3.XUSBXTI:USB时钟 4.XHDMIXTI:HDMI时钟 CMU典型应用: 1.MSYS clock domain uses APLL (that is, ARMCLK, HCLK_MSYS, and PCLK_MSYS) 2.DSYS and PSYS cl
[单片机]
S5PV210 <font color='red'>时钟</font>
低功耗Sub-GHz收发器问世 无线传感器导入能源采集有谱
    无线感测网路(WSN)应用多半以微功率(Micro-power)电池为系统供电,因此对元件功耗要求相当严苛。超低功耗Sub-GHz收发器由于能在低至1.1伏特的电压下运作,耗电量极低,故可实现以能源采集方案进行供电的无线感测器,从而降低WSN建置成本。 近几年来,无线感测网路(Wireless Sensor Network, WSN)和超低功率(Ultra-low Power, ULP)无线电市场的大幅成长,是大家有目共睹的。WSN应用包括短距离机器对机器(M2M)、人体周围的医疗感测器和许多针对新兴感测和自动化市场的其他应用。这类无线电应用从大量建基于工作周期点量测传输(Duty-cycled Spot Measureme
[物联网]
AD7416在低功耗温度检测系统中的应用
   0 引言   在测量与仪器仪表中,温度的检测几乎成为必不可少的一部分。传统的模拟温度传感器或是外围电路复杂,或是需要设计A/D转换、操作烦琐,在使用上都受到一定的限制,用数字温度传感器AD7416设计各种控制系统,体积小、功耗低、编程简单操作方便。芯片带有自动比较、可编程控制输出端OTI,在温控系统设计中有很大优势,另外,AD7416功耗低,可以编程控制工作与休眠状态的切换,在低功耗系统设计中也有广泛应用。    1 AD7416的结构功能   1.1 管脚功能   AD7416共8个管脚,采用SOIC/MSOP封装。1脚为数据输入输出口,IIC总线双向数据端口;2脚为IIC总线时钟端口;3脚OTI为温度比较输出端
[模拟电子]
基于LPC2292的CAN总线智能节点设计
引言 CAN(Controller Area Network)总线控制器局域网络是在1986年2月的SAE大会上,由RoberBosch公司首先提出的。CAN总线是一种串行通信协议,它能有效支持高安全等级的分布式实时控制,其最初的目的是用在汽车上。但由于采用了许多新技术及独特的设计,CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性,目前的应用范围已不局限于汽车行业,而是扩展到了机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械、家用电器及传感器等诸多领域。CAN节点的设计多采用单片机,为此,本文给出了一种基于本身已经嵌入了CAN控制器的单片机LPC2292的CAN总线智能节点的设计方案。 1
[应用]
比科奇在MWC 23上为全球市场带来高性能低功耗的商用5G小基站和最新技术方案
比科奇在MWC 23上为全球市场带来高性能低功耗的商用5G小基站和最新技术方案 现场展示了近十家中外客户基于PC802 PHY SoC开发的5G/4G小基站系统 西班牙巴塞罗那,2023年2月27日 - 5G小基站基带芯片和电信级软件提供商比科奇(Picocom)今日宣布, 公司携手中外客户和合作伙伴参加了于今日开幕的“2023年世界移动通信大会(MWC 23)”,向业界全面展示自主开发的PC802小基站基带系统级芯片(SoC)、PHY软件和解决方案,全球客户基于该芯片开发的4G/5G小基站系统设备,以及一体化4G+5G双模小基站等创新技术,助力移动通信产业和生态实现创新发展。 比科奇的PC802是业界首款专为
[网络通信]
比科奇在MWC 23上为全球市场带来高性能<font color='red'>低功耗</font>的商用5G小基站和最新技术方案
Dialog最新蓝牙低功耗无线多核MCU系列,为用户设立未来标准
SmartBond™产品线最新成员,提供基于集成ARM Cortex M33的专用应用处理器等先进特性 高度集成定制和可配置电源管理、AC/DC电源转换、充电和蓝牙低功耗技术供应商Dialog半导体公司宣布,推出其最先进、功能最丰富的无线连接多核微控制器单元(MCU)SmartBond™ DA1469x蓝牙低功耗SoC系列。该新产品系列包括4个型号,建立在Dialog SmartBond™产品线的成功基础之上,为广泛的IoT连网消费类应用提供更强大的处理能力、更多资源、更大的覆盖范围、和更长的电池续航能力。 DA1469x产品系列旨在帮助设备制造商利用Dialog经过验证的SmartBond™技术,拓展其可以创造的应
[嵌入式]
Dialog最新蓝牙<font color='red'>低功耗</font>无线多核MCU系列,为用户设立未来标准
TI 推出最低功耗零交越运算放大器 简化高性能设计
2007 年 8 月 28 日,北京讯 日前,德州仪器 (TI) 宣布推出业界最低功耗的零交越运算放大器 OPA369。该器件采用其独特的单输入级架构,避免了输入交越问题,实现了轨至轨性能,从而能够解决因共模电压改变而引起的输入偏移失真等常见设计问题,共模电压改变的现象在低电压轨至轨应用中非常突出。凭借 1μA 静态电流、SC70 封装以及低至 1.8V 的工作电压等多种优异特性,OPA369 简化了电池供电的便携式产品中的高性能设计。(更多详情,敬请访问: http://www.ti.com/opa369-pr 。) TI 高性能模拟业务部的高级副总裁 Art George 指出:“OPA369 采用 TI 创新的零交越拓扑与
[新品]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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