STM8L051低功耗模式实现说明文档
STM8L101 STM8L151低功耗问题
STM8L101 STM8L151 低功耗问题手上有两个项目,在用户没进行操作时,系统均要进入低功耗模式。
两个项目分别用STM8L101及STM8L151。
两个项目的系统运行时钟均为8MHz(内部高速时钟),均用锂电池供电。
对于STM8L151,芯片手册上说,进入活跃停机状态时,单片机功耗为0.8uA,我在程序中找开了自动唤醒功能,30s唤醒一次;在用户无操作时间达到30S时,就通过Halt()进入低功耗模式。
但发现功耗不低,有125uA左右。
因为系统用的是电池供电的,这么高的功耗,一个电池供不了几天,后来查了一下技术手册,原来不用的管脚要设置一下,我全都设置为推挽输出低,但有两个管脚必须得注意的,与外部晶振相连接的两个管脚,如果不使用外部晶振,即要设置为输入方式。
下载程序,用福录克表的微安档进行测量,为1.8uA,很接近芯片手册上给出的值了。
把电池拔掉,一个106的电容也能给系统供十几秒的电。
这个项目就完善的结束了。
现在来说说另一个项目,芯片用的是STM8L101,20个脚的封装,没有外部晶振的连接管脚,故不用管这两个脚的配置。
本来想用停机模式进入低功耗的,但出现有时无法唤醒的情况。
所以改用活跃停机功能,但进入活跃停机状态时,功耗不是一般的高啊,有时达到一百二三十个uA,有时为七十多uA,有时又能达到三十多uA。
但停留在七十多uA的居多。
没有的管脚已经设置了,不知哪里出了问题。
经过不停的查看原理图及调试,最终还是发现了问题。
项目里有用STM8的管脚作为触摸环的管脚,当过入活跃停机模式时,触摸管脚处于不定状态。
可能是这个问题导致低功耗时电流过高的,在程序时添加了两行代码,第一行,在进入低功耗前,把触摸环的管脚初始化为推挽输出低,第二行,在唤醒后,。
STM8低功耗设定及其例程
STM8低功耗设定及其例程STM8有三种低功耗模式,即等待、活跃停机和停机。
具体它们三者有什么区别自己看官方手册去吧,这里只讲停机模式的应用,其他的一笔带过!一、进入的方式:等待模式进入用的指令是WFI,而活跃停机和停机用的都是halt(),所不同的是,在执行halt指令之前,如果开启了AWU,则是活跃停机,反之则是停机。
还有一点要说明的是,在停机模式下独立看门狗是不能养的,而只能养窗口看门狗。
二、具体进入的步骤:1、首先,你声明一个标志位,名字自己取。
这个标志位是用来判断系统是该处于运行模式还是处于停机模式的。
我这里用fPowerOn_flag,如下:bool fPowerOn_flag = FALSE;有了这个标志位以后就写下面的部分了:int main(void){//设置内部16M晶振为系统时钟Clk_Init(); //系统时钟初始化函数MWWDG_Init();//窗口看门狗初始化函数while (1){Free_WWDG();//喂狗函数if(fPowerOn_flag == FALSE){Halt_OffDevice();//停机前关闭不需要的外设halt();//进入停机模式System_Init();//系统初始化函数}if(fPowerOn_flag){//运行代码在这里添加}}}以上就是一个停机模式的模板了,大家参照着用就可以了。
系统上电默认是进入停机模式,然后通过按键唤醒进入运行模式。
下面为大家讲一下主函数中每个函数的写法和功能吧!2、各函数说明:a、时钟初始化函数:void Clk_Init(void){CLK_DeInit();//复位时钟寄存器CLK_HSICmd(ENABLE);//使能内部高速时钟CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);//配置内部高速时钟(时钟分频器:4分频),系统时钟4MHzCLK_ClockSecuritySystemEnable();//开启时钟安全系统}这个函数我想不用多讲了,大家都懂的。
STM8 低功耗模式 STM8应用笔记
STM8 低功耗模式STM8应用笔记四种STM8低功耗模式的主要特性如表12。
(表12:STM8S低功耗模式管理)1.如果外设时钟未被关闭2.包括通讯外设的中断(参见中断向量表)STM8等待(Wait)模式在运行模式下执行WFI(等待中断)指令,可进入等待模式。
此时CPU停止运行,但外设与中断控制器仍保持运行,因此功耗会有所降低。
等待模式可与PCG(外设时钟门控),降低CPU时钟频率,以及选择低功耗时钟源(LSI,HSI)相结合使用,以进一步降低系统功耗。
参见时钟控制(CLK)的说明。
在等待模式下,所有寄存器与RAM的内容保持不变,之前所定义的时钟配置也保持不变(主时钟状态寄存器CLK_CMSR)。
当一个内部或外部中断请求产生时,CPU从等待模式唤醒并恢复工作。
STM8停机(Halt)模式在该模式下主时钟停止。
即由fMASTER提供时钟的CPU及所有外设均被关闭。
因此,所有外设均没有时钟,MCU的数字部分不消耗能量。
在停机模式下,所有寄存器与RAM的内容保持不变,默认情况下时钟配置也保持不变(主时钟状态寄存器CLK_CMSR)。
MCU可通过执行HALT指令进入停机模式。
外部中断可将MCU从停机模式唤醒。
外部中断指配置为中断输入的GPIO 端口或具有触发外设中断能力的端口。
在这种模式下,为了节省功耗主电压调节器关闭。
仅低电压调节器(及掉电复位)处于工作状态。
快速时钟启动HSI RC的启动速度比HSE快(参见数据手册中电特性参数)。
因此,为了减少MCU的唤醒时间,建议在进入暂停模式前选择HSI做为fMASTER的时钟源。
在进入停机模式前可通过设置内部时钟寄存器CLK_ICKR的FHWU位选择HSI做为fMASTER的时钟源,而无需时钟切换。
参见时钟控制章节。
STM8活跃停机(Active Halt)模式活跃停机模式与停机模式类似,但它不需要外部中断唤醒。
它使用AWU,在一定的延时后产生一个内部唤醒事件,延迟时间是用户可编程的。
STM8L探索套件学习笔记-低功耗模式(十二)
STM8L探索套件学习笔记-低功耗模式(十二)官方给的例程当中,使用PE6 作为IDD_WAKUP,将系统从低功耗中唤醒,STM8L 有5 种低功耗模式,降低功耗的方法还可以将系统时钟降低或者关闭没有使用的外设。
今天我们就使用U3 这个14 阶脉动进位计数器M74HC4060 进行HALT 模式唤醒,从原理图可以看到Q14 脚输出的反向连接到T2 模拟开关,控制PE6 端口。
因为经过两个反向器,使用Q14 的逻辑等于PE6 的逻辑。
U3的时钟频率为30KHZ,Q14 的脉冲周期为2 的14 次方除以30KHZ,约等于0.5s,也就是说Q14 输出的脉冲是周期大约为1 秒,占空比为1:1 的方波。
所以PE6 的电平变化也是周期大约为1 秒,占空比为1:1 的方波。
代码设计如下:void main(void) {GPIO_Init(LED3_PORT,LED3_PIN,GPIO_Mode_Out_PP_High_Fast);//输出低电平-高速10MGPIO_Init(LED4_PORT,LED4_PIN,GPIO_Mode_Out_PP_High_Fast); //输出低电平-高速10MGPIO_Init(CNT_EN_PORT,CNT_EN_PIN,GPIO_Mode_Out_PP_High_Fast); GPIO_Init(WAKEUP_PORT,WAKEUP_PIN,GPIO_Mode_In_FL_IT);//PE6LCD_ GLASS_Init();LCD_GLASS_DisplayString(“M74HC”);/*Enable Rising edge port PE6 for wake up conter *///EXTI->CR2 = 0x10;//上升沿或者下载沿都可以EXTI_SetPinSensitivity(EXTI_Pin_6, EXTI_Trigger_Rising);/* Enable Interrupts */enableInterrupts();GPIO_ResetBits(GPIOC,GPIO_Pin_4);//使能U3 计数器/* Infinite loop */while (1){GPIO_ToggleBits(LED3_PORT,LED3_PIN);halt();//进入HALT 模式,外部中断能够唤醒}}程序开始初始化板上的LED3/LED4,LCD显示测试M74HC 计数器的功能。
STM8L系列单片机在无线产品中的应用
STM8L系列单片机在无线产品中的应用一、STM8L系列单片机简介ST意法半导体的超低功耗产品线支持多种对功耗极为敏感的应用,例如便携式设备。
STM8L基于8位STM8内核,与STM32L系列一样采用了专有超低漏电流工艺,利用最低功耗模式实现了超低功耗(0.30uA)。
1.STM8L四个系列产品简介STM8L系列包括4个不同的产品线,适于需要特别注意节约功耗的应用。
STM8L101系列:最低功耗模式:0.30uA,动态运行模式:150uA/MHzSTM8L151/152系列:最低功耗模式:0.35uA,动态运行模式:180uA/MHzSTM8L162系列:最低功耗模式:0.35uA,动态运行模式:180uA/MHzSTM8L051/052系列:最低功耗模式:0.35uA,动态运行模式:180uA/MHz2.STM8L系列特性说明STM8L系列的单片机功能特性在8位单片机中还是显得比较突出的,其特性如下:●采用高性能STM8 8位内核:在16Mhz运行频率下,高达16MIPS● 26个引脚和软件兼容的型号,3个产品线●内置4KB 到32KB Flash,多达2KB SRAM●在运行模式下,功耗低至150 μA/MHz●提供四种低功耗模式,在SRAM数据保留的低功耗模式下,功耗仅为350 nA●配置丰富的数字和模拟外设●提供免费的触摸感应程序库二、STM8L系列单片机在无线产品中应用优势应科技智能化的发展,以及产品功耗的考虑,要求更多产品能具有低功耗的能力。
在产品的研发需求中,更多的产品寄托以电池供电的超低功耗的要求;同时,很多产品的设计都是需要单片机有足够的资源空间以及外设,还要考虑成本等问题。
这样以来,STM8L的优势就得到了体现。
一方面STM8L具有超低功耗的特点,另一方面,STM8L单片机外设丰富,成本也具有优势,对研发设计者来说,更加愿意选择STM8L单片机来做产品开发。
而对于无线产品的开发,比起其他普通产品来说,对功耗等要求更加苛刻。
STM8L系列超低功耗8位微控制器 说明书
STM8L1xx 典型应用和结构框图
医疗器械 血糖仪 胰岛素泵 糖尿病监护 血压计 胆固醇计 病人监控 心脏监护 仪表 电表/气表/水表/热表 称重 报警系统 中央处理单元 有线/无线传感器 门禁 通用移动设备 手机及配件 3D鼠标及遥控器 游戏机和玩具 GPS手表 体育设施
内部的16MHz RC振荡器 1~16MHz晶体 振荡器 内部的38kHz RC振荡器 32.768kHz晶体 振荡器 运行于16MHz的 STM8核心 嵌套的中断控制器 32个中断向量 多达40个外部中断 SWIM 调试模块 多达41个I/O端口 12位ADC 25个通道
STM8L系列
超低功耗8位微控制器
微控制 超节能
2009年9月
/mcu
STM8L超低功耗MCU系列
意法半导体公司开发出了基于8位STM8内核的超低功耗微控制器.借助一个优秀的面向未来的超低功耗平台,采 用了全新的超低漏电工艺和优化的体系结构,STM8L系列微控制器集合了高性能与超低功耗于一身.STM8L系列 现有三个子系列,可以满足对低功耗有特殊要求的多种应用.
STM8L一览
现在已有26个兼容的产品
Flash容量 (字节) STM8L152C8
64 K 32 K 16 K 8K
STM8L152R8 STM8L152M8 STM8L151R8 STM8L151M8
STM8L151C8 STM8L152K6 STM8L151G6 STM8L151K6 STM8L152K4 STM8L151G4 STM8L151K4 STM8L151F3 STM8L101F3 STM8L151G3 STM8L151K3 STM8L101G3 STM8L101K3 STM8L151G2 STM8L101G2 28引脚 QFN (4x4) 32引脚 LQFP (7x7)/ QFN (5x5) 48引脚 LQFP (7x7)/ QFN (7x7) STM8L152C6 STM8L151C6 STM8L152C4 STM8L151C4
STM8L中文参考手册_2
手动开关手动开关没有自动切换为直接的但它提供给用户的切换事件时间的精确控制。
参照图20中的流程图。
1。
写使用系统时钟开关选择目标时钟源的8位值寄存器(clk_swr)。
然后swbsy位是由硬件,和目标源振荡器开始。
古老的时钟源继续驱动CPU和外设。
2。
该软件具有等到目标时钟源准备(稳定的)。
这是在clk_swcr寄存器和快捷旗由中断如果swien位设置显示。
3。
最终软件的作用是设置,在所选择的时间,在clk_swcr的赛文点寄存器来执行开关。
在手动和自动切换模式,旧的系统时钟源不会自动关闭的情况下是由其他模块(LSI混凝土可用于例如独立的看门狗驱动)。
时钟源可以关机使用在内部时钟寄存器的位(clk_ickcr)和外部时钟寄存器(clk_eckcr)。
如果时钟开关不因任何原因的工作,软件可以通过清除swbsy标志复位电流开关操作。
这将恢复clk_swr注册到其以前的内容(旧的系统时钟)。
注意:在清理swbsy标志具有复位时钟主开关的程序,应用程序必须等到后产生新的主时钟切换请求之前有一段至少两个时钟周期。
9.7周门控时钟(PCG)外周时钟门控(PCG)模式选择性地启用或禁用系统时钟(SYSCLK)连接到外围设备在运行或慢速模式的任何时间来优化功耗。
设备复位后,所有的外设时钟被禁用。
唯一的一点是在复位状态是默认启用pcken27因为它用于启动。
软件已被正确地写入关掉ROM Bootloader执行后的时钟。
您可以启用时钟的任何外围设置在clk_pckenrx周围门控时钟寄存器的相应pcken点。
●使周围,首先使在clk_pckenr相应的pcken点寄存器然后设置使点周围的外围控制寄存器。
●禁用适当的外围,先禁用在周边的适当位控制寄存器,然后停止相应的时钟。
注:蜂鸣器,RTC和液晶显示器是由不同的SYSCLK特定的时钟,使他们继续运行,即使时钟门控的外设寄存器是断言。
9.8时钟安全系统(CSS)9.8.1时钟安全系统对HSE时钟安全系统(CSS)监控HSE晶体时钟源故障时安全作为系统时钟。
STM8L中文参考手册-1
本参考手册的目标应用程序开发人员。
它提供了完整的信息如何使用stm8l05xx,stm8l15xx 和stm8l16xx微控制器的存储器和外围设备。
该stm8l05xx / stm8l15xx / stm8l16xx是一个家庭的不同存储密度的微控制器和外围设备。
这些产品是专为超低功耗应用。
可用的外设的完整列表,请参阅产品数据表。
订购信息,引脚说明,机械和电气设备的特点,请参阅产品数据表。
关于STM8 SWIM通信协议信息和调试模块,请参阅用户手册(um0470)。
在STM8的核心信息,请参阅STM8的CPU编程手册(pm0044)。
关于编程,擦除和保护的内部快闪记忆体,请参阅STM8L闪存编程手册(pm0054)。
1 中央处理单元(CPU)。
30。
1.1 引言301.2 CPU的寄存器。
30。
1.2.1 描述CPU寄存器。
..。
301.2.2 STM8 CPU寄存器图。
..。
341.3 全球配置寄存器(cfg_gcr)。
34。
1.3.1 激活水平。
..。
341.3.2 游泳禁用。
..。
351.3.3 描述全局配置寄存器(cfg_gcr)。
..。
35 1.3.4 全局配置寄存器图及复位值。
..。
352 启动ROM . . . 363程序存储器和数据存储器。
37。
3.1引言373.2术语。
37。
3.3个主要的快闪存储器的特点。
38。
3.4记忆的组织。
39。
3.4.1低密度设备的存储器组织。
393.4.2介质密度的装置记忆的组织。
..。
403.4.3介质+密度装置记忆的组织。
..。
413.4.4高密度存储器组织。
..。
423.4.5专有代码区(译)。
433.4.6用户区(UBC)。
433.4.7数据的EEPROM(数据)。
..。
463.4.8主程序区。
463.4.9选项字节。
..。
463.5内存保护。
47。
3.5.1读出保护。
473.5.2内存访问安全系统(质量)。
473.5.3使写访问选项字节。
493.6内存编程493.6.1同时读写(读写网)。
STM微控制器的低功耗模式及其应用场景
STM微控制器的低功耗模式及其应用场景在物联网时代的到来,对于电子设备来说,低功耗一直是一个重要的考量因素。
对于STM微控制器来说,它的低功耗模式是其重要的特性之一。
本文将介绍STM微控制器的低功耗模式及其在不同应用场景中的应用。
一、STM微控制器的低功耗模式STM微控制器的低功耗模式是指在特定条件下控制器可以降低功耗,以延长电池寿命或提高设备的效能。
低功耗模式主要分为以下几种:1. 低功耗运行模式在该模式下,控制器在低功耗状态下继续执行程序。
为了降低功耗,控制器会降低工作频率或关闭一些不必要的外设模块。
2. 低功耗睡眠模式在睡眠模式下,控制器暂停执行程序,并关闭大部分的外设模块,仅保留必要的时钟和存储器。
睡眠模式能有效地降低功耗,是一种常见的低功耗应用模式。
3. 低功耗停机模式停机模式是控制器达到最低功耗的模式。
在停机模式下,控制器会完全关闭,并断开与外界的连接。
在需要唤醒时,控制器通过外部事件或定时器实现。
二、STM微控制器低功耗模式的应用场景STM微控制器的低功耗模式在各种应用场景中都有广泛的应用。
以下将介绍其中一些典型的场景:1. 无线传感器网络无线传感器网络在环境监测、智能家居等领域中广泛应用。
传感器节点通常需要长时间连续运行,但电池容量有限。
STM微控制器的低功耗模式使传感器节点在保证长时间工作的同时,能够极大地延长电池寿命。
2. 智能穿戴设备智能穿戴设备如智能手表、健康监测设备等通常需要长时间佩戴并实时监测。
低功耗模式能够降低设备的功耗,延长续航时间,并提供更好的使用体验。
3. 电池供电设备对于电池供电的设备,低功耗模式尤为重要。
比如智能门锁、远程控制器等设备通常需要长时间待机,但需要在用户触发时迅速响应。
低功耗模式能够在保持设备待机状态时,准备随时响应用户的操作,提高用户体验。
4. 通信模块通信模块如蓝牙模块、WiFi模块等通常需要较长的待机时间,但需要在收到消息时迅速启动以响应。
STM8L微控制器中文参考手册
STM8L微控制器中⽂参考⼿册本参考⼿册的⽬标应⽤程序开发⼈员。
它提供了完整的信息如何使⽤stm8l05xx,stm8l15xx和stm8l16xx 微控制器的存储器和外围设备。
该stm8l05xx / stm8l15xx / stm8l16xx是⼀个家庭的不同存储密度的微控制器和外围设备。
这些产品是专为超低功耗应⽤。
可⽤的外设的完整列表,请参阅产品数据表。
订购信息,引脚说明,机械和电⽓设备的特点,请参阅产品数据表。
关于STM8 SWIM通信协议信息和调试模块,请参阅⽤户⼿册(um0470)。
在STM8的核⼼信息,请参阅STM8的CPU编程⼿册(pm0044)。
关于编程,擦除和保护的内部快闪记忆体,请参阅STM8L 闪存编程⼿册(pm0054)。
1 中央处理单元(CPU)。
30。
1.1 引⾔301.2 CPU的寄存器。
30。
1.2.1 描述CPU寄存器。
..。
301.2.2 STM8 CPU寄存器图。
..。
341.3 全球配置寄存器(cfg_gcr)。
34。
1.3.1 激活⽔平。
..。
341.3.2 游泳禁⽤。
..。
351.3.3 描述全局配置寄存器(cfg_gcr)。
..。
35 1.3.4 全局配置寄存器图及复位值。
..。
352 启动ROM . . . 363程序存储器和数据存储器。
37。
3.1引⾔373.2术语。
37。
3.3个主要的快闪存储器的特点。
38。
3.4记忆的组织。
39。
3.4.1低密度设备的存储器组织。
393.4.2介质密度的装置记忆的组织。
..。
40 3.4.3介质+密度装置记忆的组织。
..。
41 3.4.4⾼密度存储器组织。
..。
423.4.5专有代码区(译)。
433.4.6⽤户区(UBC)。
433.4.7数据的EEPROM(数据)。
..。
463.4.8主程序区。
463.4.9选项字节。
..。
463.5内存保护。
47。
3.5.1读出保护。
473.5.2内存访问安全系统(质量)。
STM8L微控制器中文参考手册
本参考手册的目标应用程序开发人员。
它提供了完整的信息如何使用stm8l05xx,stm8l15xx和stm8l16xx 微控制器的存储器和外围设备。
该stm8l05xx / stm8l15xx / stm8l16xx是一个家庭的不同存储密度的微控制器和外围设备。
这些产品是专为超低功耗应用。
可用的外设的完整列表,请参阅产品数据表。
订购信息,引脚说明,机械和电气设备的特点,请参阅产品数据表。
关于STM8 SWIM通信协议信息和调试模块,请参阅用户手册(um0470)。
在STM8的核心信息,请参阅STM8的CPU编程手册(pm0044)。
关于编程,擦除和保护的内部快闪记忆体,请参阅STM8L闪存编程手册(pm0054)。
1 中央处理单元(CPU)。
30。
1.1 引言301.2 CPU的寄存器。
30。
1.2.1 描述CPU寄存器。
..。
301.2.2 STM8 CPU寄存器图。
..。
341.3 全球配置寄存器(cfg_gcr)。
34。
1.3.1 激活水平。
..。
341.3.2 游泳禁用。
..。
351.3.3 描述全局配置寄存器(cfg_gcr)。
..。
35 1.3.4 全局配置寄存器图及复位值。
..。
352 启动ROM . . . 363程序存储器和数据存储器。
37。
3.1引言373.2术语。
37。
3.3个主要的快闪存储器的特点。
38。
3.4记忆的组织。
39。
3.4.1低密度设备的存储器组织。
393.4.2介质密度的装置记忆的组织。
..。
40 3.4.3介质+密度装置记忆的组织。
..。
41 3.4.4高密度存储器组织。
..。
423.4.5专有代码区(译)。
433.4.6用户区(UBC)。
433.4.7数据的EEPROM(数据)。
..。
463.4.8主程序区。
463.4.9选项字节。
..。
463.5内存保护。
47。
3.5.1读出保护。
473.5.2内存访问安全系统(质量)。
473.5.3使写访问选项字节。
8位微控制器提供多种低功耗模式
8 位微控制器提供多种低功耗模式
8 位微控制器提供多种低功耗模式
意法半导体(STMicroelectronics)目前宣布其首批整合其高性能8 位架构的超低功耗8 位微控制器STM8L 系列开始量产。
STM8L 系列以节省运行和待机功耗为特色,该平台采用意法半导体独有的超低泄漏电流优化的130nm 制程,下设三个产品线均基于意法半导体的超低功耗技术平台,共计26 款产品,涵盖多种高性能和多功能应用。
图1,STM8L152 结构框图
低功耗嵌入式非易失性存储器和多个电源管理模式是STM8L 系列的
创新特性。
电源管理模式包括5.4μA低功耗运行模式、3.3μA低功耗待机模式、1μA主动停止模式(实时时钟运行)和350nA 停止模式。
多种模式使STM8L 系列适用于对节能环保需求和电池使用周期较高的领域,如便携设备、医疗、工业、电子计量、感应或安保设备。
意法半导体大中国区微控制器产品部高级技术经理梁平表示,除了活跃暂停模式和暂停模式外,低功耗运行模式和低功耗等待模式是STM8L 系列提供的两种新的低功耗模式。
在低功耗运行模式下,CPU 依然运行;代码在RAM 中执行,低速振荡器提供时钟;低速外部振荡器/低速RC 振荡器提供CPU 时钟,调压器处于低功耗模。
STM8L低功耗调试方法
STM8L低功耗调试方法STM8L低功耗调试方法做了一个电池供电的项目,刚开始光想着完成功能,最后再去整低功耗。
看了资料STM8L 的低功耗感觉很好。
结果把自己坑惨了。
因为就这个功能老是实现不了。
着急上火的我,从ST的官网下载了STM8L的代码。
关键词,就一句话:Halt_Init();发现解决不了问题。
又接着看资料。
表示要关闭各路时钟CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, DISABLE);CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, DISABLE);CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, DISABLE);CLK_PeripheralClockConfig(CLK_Peripheral_LCD, DISABLE);想想也是,应该让这些个模块都休息。
把功耗降低。
结果不尽人意。
又找来一句:PWR_UltraLowPowerCmd(ENABLE);还是不行。
又找百度,发现GPIO的设置很重要。
于是,把所有的GPIO全部设为输出。
且都设为与上下拉相对应的电平。
保证没有漏电流。
仍然解决不了问题。
越到后面越急。
发现加了一堆代码。
就是不行。
发现总是有1.27MA的电流。
一直存在。
坑的事情发生了,网上居然很多人都是在这个电流附近。
各种神操作。
两天后(每天只折腾一到二个小时),我奔溃了。
接下来,我静下心来,弄了一个全新的工程。
把代码一小段一小段的加上去试。
终于发现有些有意思的事情了。
原以为,把时钟关闭,这个模块就没有了驱动,就会休息。
就应该省电。
实际上,这个操作是有个过程的,看一下正常的初始化操作(以定时器为例)CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);TIM4_TimeBaseInit(TIM4_Prescaler_16 ,124);TIM4_ITConfig(TIM4_IT_Update , ENABLE);TIM4_Cmd(ENABLE);要求,先打开时钟,然后设好时钟的分频和时钟基数,再打开中断允许,最后开启时钟功能。
基于STM8L的低功耗传输系统设计
2020.121系统整体设计架构系统主要实现唤醒状态时传感器采集数据,并通过蓝牙透传给手机,实时查看数据,待机模式进入低功耗。
系统设计框架图如图1所示,重点介绍STM8L 低功耗处理,传感器采集数据,蓝牙低功耗传输数据。
1.1主控芯片STM8L 基于8位STM8内核,与STM32L 系列一样采用了专有超低漏电流工艺,利用最低功耗模式实现了超低功耗,STM8L051/052超值超低功耗微控制器为成本敏感型应用提供了最佳性价比。
STM8L051/052最低功耗模式:0.35uA,动态运行模式:180uA/MHz。
系统中采用STM8L051F3P6芯片,封装TSSOP-20。
该芯片拥有8KB Flash 及通用定时器;片上集成了丰富的外围模块,包括12位ADC、12位DAC、SPI、I2C、USART、LCD 等[1]。
1.2HJ-131IMHHJ-131IMH 蓝牙模组是宏佳电子科技公司与Dialog合作开发的超小蓝牙低功耗模块,这款蓝牙模块在发送状态时功耗不超过3.5mA,在接收状态时功耗不超过2.2mA。
HJ-131IMH 的内核芯片是DA14531,DA14531支持最新的蓝牙5.1标准的核心规范,基于强大的32位ARM Cortex-M0+内核,具有集成的内存及一套完整的模拟和数字外设,DA14531中集成的DC-DC 转换器具有较宽的工作电压(1.1-3.3V),封装尺寸仅为2.0×1.7mm [2]。
此外,该SoC 具备高集成度,仅需6颗外部无源器件、1个时钟源、1个电源即可实现完整的蓝牙低功耗系统。
HJ-131IMH 默认为低功耗广播唤醒模式,此时主机或手机APP 能够随时连接,当串口收到10字节以上的任意数据后,模组被唤醒3s。
HJ-131IMH 功耗,休眠<2uA,1秒间隔广播7uA (0dBm),2秒间隔广播3.8μA (0dBm),20ms 连接间隙65uA (0dBm),1000ms 连接间隙6.8uA (0dBm)[3]。
STM8L 电源管理以及自动唤醒AWU
电源供电以及低功耗模式MCU有一个电源供电。
供电有两种模式:主电压供电模式(MVR)和低功率电压供电模式(LPVR)。
系统进入停机(Halt)模式或者活跃停机(Active-halt)模式,供电从MVR进入到LPVR。
电源管理在系统或者电源复位启动后,处理器默认进入运行模式。
这模式CPU的时钟为fmaster,并执行程序。
外设时钟都被禁止。
在运行模式下,仍然保持CPU运行和执行代码,下面操作可以降低电源功耗:•减慢系统时钟。
•未使用的外设将其时钟禁止。
•关掉未使用的模拟功能。
当CPU无需运行时,有三种低功耗模式可供选择:•等待模式•活跃停机模式•停机模式以上三种模式可以配置获得最优的低功耗,最快速的启动和可利用的唤醒源。
通用配置低功耗的特点对于节约能源起到重要作用。
尤其适用于移动设备。
在芯片中有两种功耗方式:1.静态功耗由极化电流和漏电流造成。
静态功耗很小,只在停机(Halt)模式和活跃停机(Active Halt)模式下有意义。
2.动态功耗:来自于芯片上正在运行的数字模块。
它取决于VDD,时钟频率和负载电容。
一个微控制器的功耗取决于:•VDD供电电压•模拟性能•MCU大小及数字逻辑门数(漏电流及负载电容)•时钟频率•处于激活状态的外设数目•可用的低功耗模式及级别微控制器MCU的处理速度也很重要,这使得用户程序只需很短时间处于运行状态,而更多时间处于低功耗模式下。
使用STM8灵活的低功耗特性,用户可在很大范围内降低STM8S系统功耗并快速恢复操作。
低功耗下的时钟管理系统时钟的降低在运行模式下,对于配置最优性能和功耗选择时钟频率是非常重要的。
可以配置CLK_CKDIVR寄存器来完成。
注:在某一时期MCU可以进入停机模式。
为了降低活跃和停机期间的比例,在活跃期间保持高速时钟可以降低功耗。
外设时钟控制使用PCG来节省额外的功耗。
在任意时期都可以使能或者禁止主时钟与外设的连接。
这些设置在运行模式和等待模式都是有效的。
(2021年整理)单片机低功耗模式
(完整版)单片机低功耗模式编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)单片机低功耗模式)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)单片机低功耗模式的全部内容。
(完整版)单片机低功耗模式编辑整理:张嬗雒老师尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望 (完整版)单片机低功耗模式这篇文档能够给您的工作和学习带来便利。
同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为〈(完整版)单片机低功耗模式> 这篇文档的全部内容。
许多人说PIC单片机一大的优势就是低功耗,那我们就来讨论,讨论低功耗的实现。
1,睡眠(sleep)睡眠方式是我们最常用的一种方式来降低功耗,但睡眠期间单片机不能做任何的事情.对于那些没事情就睡着,有事情就做一下的情况睡眠无疑是功耗最低的处理方式。
比如:睡眠+ I/O电平变化中断唤醒当按键没按下时,单片机睡眠,当按键按下后,执行相应的工作。
睡眠+数据接收中断唤醒这样单片机就可以再没有接收到数据时候进入睡眠状态,接收到数据的时候就唤醒然后处理数据。
当然首先单片机要有相关的外设比如SPI ,I2C,USART,等这些支持这些通讯的模块.睡眠+看门狗唤醒这个可以用在需要定时唤醒做事情的场合2,降低时钟频率如果即想功耗低,又想单片机在能低功耗的情况下工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM8L051低功耗模式测试文档STM8L051的五种低功耗模式wait ,low power run mode,low power wait mode,Ative-Halt mode,Halt mode。
1、WAIT mode在等待模式,CPU的时钟是停止的,被选择的外设继续运行。
W AIT mode 分为两种方式:WFE,WFI。
WFE是等待事件发生,才从等待模式中唤醒。
WFI是等待中断发生,才从等待模式中唤醒。
2、low power run mode在低功耗运行模式下,CPU和被选择的外设在工作,程序执行在LSI或者LSE下,从RAM 中执行程序,Flash和EEPROM都要停止运行。
电压被配置成Ultra Low Power模式。
进入此模式可以通过软件配置,退出此模式可以软件配置或者是复位。
3、low power wait mode这种模式进入是在low power run mode下,执行wfe。
在此模式下CPU时钟会被停止,其他的外设运行情况和low power run mode类似。
在此模式下可以被内部或外部事件、中断和复位唤醒。
当被事件唤醒后,系统恢复到low power run mode。
4、Active-Halt mode在此模式下,除了RTC外,CPU和其他外设的时钟被停止。
系统唤醒是通过RTC中断、外部中断或是复位。
5、Halt mode在此模式下,CPU和外设的时钟都被停止。
系统唤醒是通过外部中断或复位。
关闭内部的参考电压可以进一步降低功耗。
通过配置ULP位和FWU位,也可以6us的快速唤醒,不用等待内部的参考电压启动。
一、各个低功耗模式的代码实现1、WAIT mode等待模式分为两种:WFI和WFE。
1.1 WFI mode当执行“wfi”语句时,系统就进入WFI模式,当中断发生时,CPU被从WFI模式唤醒,执行中断服务程序和继续向下执行程序。
通过置位CFG_GCR的AL位,使主程序服务完中断服务程序后,重新返回到WFI 模式。
程序如下:void Mcuwfi(){PWR_UltraLowPowerCmd(ENABLE); //开启电源的低功耗模式CLK_HSEConfig(CLK_HSE_OFF); //关闭HSE时钟(16MHz)#ifdef USE_LSECLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSE);CLK_SYSCLKSourceSwitchCmd(ENABLE);while (((CLK->SWCR)& 0x01)==0x01);CLK_HSICmd(DISABLE);#elseCLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);CLK_SYSCLKSourceSwitchCmd(ENABLE);while (((CLK->SWCR)& 0x01)==0x01);CLK_HSICmd(DISABLE);#endif //切换时钟到LSI(38KHz)wfi(); //进入WFI模式#ifdef Only_Interrupt //设置CFG_GCR的AL位,服务完中断后回到WFI模式CFG->GCR =CFG_GCR_AL;#endif}1.2 WFE当执行“wfe”语句时,系统就进入WFE模式。
WFE有两种唤醒模式,一种是:中断唤醒,一种是:事件唤醒。
当中断唤醒时,当执行到wfe时,进入wfe模式休眠。
系统执行步骤如下:进入WFE模式---> 有中断产生--->系统唤醒--->执行中断服务程序--->继续休眠。
当事件唤醒时,当执行到wfe时,进入wfe模式休眠。
系统执行步骤如下:进入WFE模式---> 有中断产生--->系统唤醒--->执行中断服务程序--->继续往下执行。
2、low power run mode这种模式程序在RAM中执行,EEPROM和FLASH是在IDDQ(低功耗模式),时钟切换到低速时钟。
进入此模式的步骤如下:1、进入RAM2、切换系统时钟到LSE或LSI3、关闭高速时钟、外设和ADC4、屏蔽中断5、通过设置FLASH_CR1的EEPM位来关闭FLASH和EEPROM6、等待FLASH和EEPROM关闭7、通过设置CLK_REGCSR的REGOFF位进入校准低功耗模式退出low power run mode的步骤如下:1、通过重置CLK_REGCSR的REGOFF位进入主校准模式,延时等待主校准稳定。
2、通过设置FLASH_CR1的EEPM位来打开FLASH和EEPROM,延时等待FLASH和EEPROM打开。
3、屏蔽所有中断。
程序如下:void LPR_init(void){/*Switch the clock to LSE and disable HSI*/CLK_HSEConfig(CLK_HSE_OFF);#ifdef USE_LSECLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSE);CLK_SYSCLKSourceSwitchCmd(ENABLE);while (((CLK->SWCR)& 0x01)==0x01);CLK_HSICmd(DISABLE);#elseCLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);CLK_SYSCLKSourceSwitchCmd(ENABLE);while (((CLK->SWCR)& 0x01)==0x01);CLK_HSICmd(DISABLE);#endif//PWR_UltraLowPowerCmd(ENABLE);/*Configure event for WAKEUP and FUNCTION, disable the interrupts*/CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);//切换系统时钟// 到LSIsim(); //屏蔽中断LPR_Ram(); // Call in RAM //程序在RAM里执行//if(lowpowerwait_flag==1)// {// lowpowerwait_flag=0;//Switch on the regulator// CLK->REGCSR = 0xb9;// while(((CLK->REGCSR)&0x1) != 0x1);/*Switch the clock to HSI*/CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);CLK_HSICmd(ENABLE);while (((CLK->ICKCR)& 0x02)!=0x02);CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);CLK_SYSCLKSourceSwitchCmd(ENABLE);while (((CLK->SWCR)& 0x01)==0x01);sim(); //退出Low power run mode//}}3、Low power wait mode进入Low power wait mode模式是在MCU进入Low power run mode后执行wfe指令。
从Low power wait mode模式退出只能通过外部中断。
退出Low power wait mode模式后,CPU会返回到Low power run mode。
__ramfunc void LPR_Ram(void)//void LPR_Ram(void)#endif{uint8_t i = 0;/* To reduce consumption to minimalSwith off the Flash */FLASH->CR1 = 0x08;while(((CLK->REGCSR)&0x80)==0x80);/* Swith off the Regulator*/CLK->REGCSR = 0x02;while(((CLK->REGCSR)&0x01)==0x01);if(lowpowerwait_flag==0)while(1);Else //在此处进入Low power wait mode,进入WFE的配置。
{/* Set trigger on GPIOB pin3*/WFE->CR2 = 0x01;/*Wait for end of counter */wfe();EXTI->SR1 |= 0x10;EXTI->SR2 |= 0x01;WFE->CR2 = 0x00; //退出Low power wait mode,进入Low power run mode}}4、Active-Halt mode在Active-Halt模式下,主时钟和CPU,以及大部分的外设都停止了,只剩下LSE或LSI 为一部分的外设提供时钟,能在Active-Halt模式运行的外设包括:SWIM、beeper、IWDG、RTC和LCD。
进入Active-Halt模式,是通过halt语句。
退出是通过外部中断、RTC和复位。
参看代码如下:void McuActive_Halt(){//Halt_Init();PWR_UltraLowPowerCmd(ENABLE);RTC_Config(10000); //初始化RTC/*#ifdef USE_LSECLK_LSEConfig(CLK_LSE_OFF);while ((CLK->ECKCR & 0x04) != 0x00);#elseCLK_LSICmd(DISABLE);while ((CLK->ICKCR & 0x04) != 0x00);#endif*/sim();halt(); //进入Active-Halt模式}5、Halt mode在Halt mode下,系统时钟停止,CPU和所有的外设停止。
进入Halt mode,是执行halt 语句。
退出此模式,是通过外部中断和复位。
Halt mode和Active-Halt mode的区别是:Active-Halt mode下的一些外设还在工作。
参考代码如下:void McuHalt(){Halt_Init(); //关闭外设sim(); //屏蔽中断halt(); //进入Halt模式}二、测试功耗2.1、测试的各个模式下的功耗的测试步骤如下:1、烧写不同模式下的代码,配置外部中断唤醒。