您的位置 首页 观点

STM32单片机待机形式完成低功耗测验

STM32单片机待机模式实现低功耗测试-电流的测量用的是万用表,串联在电源的输入端,也就是说,实际测量的电流值为电路板消耗电流。电机、喇叭、OLED-0.9寸屏这些外部器件均未接入。

系统时钟选择外部8M晶振,电源为电脑USB口取电,上电后按下S2,进入待机模式,按下S1唤醒。

测验了待机形式,待机形式完成体系的最低功耗。

原理图如下,一开始悉数焊接了,其间S2用来进入待机,S1用来唤醒

STM32单片机待机形式完成低功耗测验

测验程序为:

#include“stm32f10x.h”#include“system_stm32f10x.h”voidSys_Standby(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR外设时钟PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功用PWR_EnterSTANDBYMode();//进入待机(standby)形式}//体系进入待机形式voidSys_Enter_Standby(void){RCC_APB2PeriphResetCmd(0X01FC,DISABLE);//复位一切IO口,屏蔽这条句子也没有看到什么影响Sys_Standby();}voidIO_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//PB6上拉输入,对应按键S2GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);}intmain(){IO_Init();while(1){if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)==0){Sys_Enter_Standby();}}}123456789101112131415161718192021222324252627282930313233343536373839

电流丈量用的是万用表,串联在电源的输入端,也就是说,实践丈量的电流值为电路板耗费电流。电机、喇叭、OLED-0.9寸屏这些外部器材均未接入。

体系时钟挑选外部8M晶振,电源为电脑USB口取电,上电后按下S2,进入待机形式,按下S1唤醒。

上电, 正常运转电流7.9mA,待机电流205uA,待机电流比较大;

取下DS1302芯片,正常运转电流7.9mA,待机电流10.5uA;

再取下DS1302芯片的三个上拉电阻,和上面相同,没改变;(看来即使有外部上拉,在待机形式时也是不必管的,仅仅不知道这上拉电阻接到了外围芯片上对外围电路的功耗有怎样的影响。)

再取下AT24C02芯片模块,正常电流7.7mA,待机电流10.5uA;

再取下L9110S电机驱动芯片,正常电流7.7mA,待机电流10.5uA,没有改变;

再取下SK040G语音芯片,就剩电源和按键部分了,正常电流7.6mA,待机7.4uA。

修正程序,开RTC后(选外部32.768k晶振),待机时电流为8.6uA。

装上OLED 0.9寸小128×64液晶屏测验了下,待机时120uA,此刻若取下液晶屏,电流由120uA变到正常待机的7.4uA。

待机形式可完成 STM32的最低功耗。该形式是在 CM3 深睡觉形式时封闭电压调节器,整个 1.8V 供电区域被断电,PLL、HSI和 HSE振荡器也被断电,SRAM寄存器内容丢掉,仅备份的寄存器和待机电路坚持供电。

从待机形式唤醒后的代码履行等同于复位后的履行(采样发动形式引脚,读取复位向量等),电源操控/状况寄存器(PWR_CSR)将会指示内核由待机状况退出。

待机形式下的输入/输出端口状况

● 复位引脚(一直有用)

● 当被设置为防侵入或校准输出时的TAMPER引脚

● 被使能的唤醒引脚

《已然进入待机形式后各IO处于高阻态,那么所谓的IO口进待机前需装备为AIN、或许弱上拉弱下拉形式的,其实都没必要了,但看其他的网络文章有说需装备的,我也是弱上拉、弱下拉、模仿输入、浮空输入都测验了下,关于最小体系,没看到待机电流有什么改变,也测验了下开串口、SPI口什么的,对待机电流都没有发现影响,文档上“进入待机形式后,只要备份的寄存器和待机电路坚持供电,其他部分没有供电”,那天然不会发生功耗,进入待机形式前就没必要装备。对外围硬件电路进入待机前依据状况才看是否有设置外围芯片作业形式的必要。主芯片进入待机后,管脚都为高阻态,要看这种状况对外围芯片电路会带来怎样的影响,假如不合适就要考虑中止形式,在中止形式下,一切的I/O引脚都坚持它们在运转形式时的状况。》

关于唤醒管脚PA0(WKUP),在寄存器PWR_CSR中的第8位EWUP位有阐明:

EWUP:使能WKUP引脚

0: WKUP引脚为通用I/O。 WKUP引脚上的事情不能将CPU从待机形式唤醒

1:WKUP引脚用于将CPU从待机形式唤醒,WKUP引脚被强置为输入下拉的装备(WKUP引脚上的上升沿将体系从待机形式唤醒)

注:在体系复位时铲除这一位。(即体系复位重启后该位为0)

也就是说进待机形式后,WKUP主动被设置为下拉输入(下拉电阻典型值40K),无需额定装备端口A时钟及PA0管脚功用。

正常运转时IO口的损耗及呼应装备:

以下为转载http://blog.csdn.net/beep_/arTIcle/details/47975227

I/O模块损耗:

静态损耗:

内部上下拉电阻损耗:这部分损耗首要取决于内部电阻的巨细,一般为了下降内部电阻损耗常常需求下降电阻两头电压,若引脚为低电压则选用下拉电阻,若引脚为高电压则选用上拉电阻。

I/O额定损耗:当引脚设为输入I/O时,用来区别电压凹凸的斯密特触发器电路会发生一部分耗费,为此可将引脚设为模仿输入形式。

动态损耗:关于悬浮的引脚,因为其电压不稳定会发生外部电磁搅扰和损耗,因而有必要把悬浮引脚设为模仿形式或输出形式。

引脚电压的切换会对外部和内部电容负载发生动态损耗,其损耗与电压切换频率和负载电容有关。详细损耗值如下:

STM32单片机待机形式完成低功耗测验

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/346161.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部