历史上的今天
返回首页

历史上的今天

今天是:2024年11月13日(星期三)

正在发生

2019年11月13日 | STM32低功耗模式之待机模式

2019-11-13 来源:eefocus

上周完成了一个小项目,项目涉及到stm32的低功耗的待机模式,特在此记录下32的待机模式。


芯片:STM32f030F4


库:HAL库


唤醒方式:用RTC和PA0的上升沿唤醒


先来看下低功耗模式下的情况(只看停止跟待机):


停止模式


停止模式在保留SRAM和寄存器内容的同时实现了非常低的功耗。


1.8V域中的所有时钟停止,PLL、HSI RC和禁用HSE晶体振荡器。电压调节器也可以安装在正常或低功率模式。


该设备可以被任何一条exti线路从停止模式唤醒。


exti行源可以是16个外部行和rtc之一。


待机模式


待机模式用于实现最低功耗。内部关闭电压调节器,使整个1.8V域断电。


这个PLL、HSI RC和HSE晶体振荡器也关闭。


进入后待机模式、SRAM和寄存器内容丢失,但RTC域和备用电路中的寄存器除外。


当外部复位(NRST管脚)、IWDG复位时,设备退出待机模式。


Wkup管脚上的上升沿,或发生RTC事件。


可以看出待机模式跟停止模式差不多,其实功耗上停机配置的好的话也就比待机高一些,不过停止模式的唤醒方式的选择可以更自由,寄存器的数据也可以保存,所以我感觉停机模式更适合大多产品的需求,但是今天我只对待机模式的一些注意事项进行提出。


待机模式的进入很方便,只需要调用一句HAL_PWR_EnterSTANDBYMode()就可以进入待机模式了,待机模式唤醒就相当于复位,它之前的数据会全部丢失,所以要注意自己程序运行的时候,如有某些状态量一定要保存,那就保存进flash,唤醒的时候就去读取它。待机模式下所有IO口会处于高阻态,但不是说高阻态就是最省电的,跟电路设计还有一定的联系,当你进入待机发现电流跟手册上相差挺大的时候考虑下我的解决方法。


解决方法:其实这里可以考虑下把不使用的I/O口在休眠前都设置为模拟输入。原因:

额外的I/O电流消耗是由于I/O配置为输入,如果中间电压水平由外部施加。


这种电流消耗是由输入施密特引起的。


用于区分输入值的触发电路。除非此特定配置


根据应用程序的要求,可以通过配置这些I/O处于模拟模式。这是典型的ADC输入引脚的情况,应该是配置为模拟输入。

条件:典型和最大电流消耗


在以下条件下放置MCU:


•所有I/O引脚都处于模拟输入模式


•所有外围设备均被禁用,除非明确提及。


所以:官方其实也是在这个模式下测出的数据,实验证明,确实设置为模拟输入,电流跟手册上描写的差不多。


(也别忘了 __HAL_RCC_PWR_CLK_ENABLE();使能PWR时钟,这个能降功耗,唤醒之后要清除唤醒标志位)


如果功耗还是跟手册有区别,就要考虑供电电压,温度的影响。其实也可以通过供电电压的降低来降低功耗,STM32f030F4手册没有电压的对比,这里放下STM32F103C8的对比图:

 

要想让stm32进入更低功耗的状态,还需要考虑唤醒方式的种类和个数,比如在待机模式下,看门狗,RTC都是用内部40kHz的时钟,还有PA0外部中断的唤醒,如果全部模式都打开的话,功耗也会上升,所以要根据自己项目来设定唤醒模式,唤醒方式少一点,功耗就能低一点,总的来说就是这么些注意事项。


还有在使用RTC唤醒的时候要注意一下,如果你是cubeMx创建的工程每次唤醒RTC都是会重新初始化从0开始的计时的,这可能对一些人是好事,对一些人就不是那么好了,这个网上有很多解决方法,这里说一下闹钟的配置:

这里是要1小时唤醒一次,下面的配置就要设置上,要用到的设置为DISABLE,没用到的设置为ENABLE。


使用内部时钟的RTC时钟40KHz往往是不准的,所以你们可以自己去调节参数,让它秒中断跑的更精准。

大概就是这样了,低功耗待机模式总结下:


1、使能PWR时钟 __HAL_RCC_PWR_CLK_ENABLE();


2、配置I/O口为模拟输入


3、再进入待机模式


推荐阅读

史海拾趣

Ericsson公司的发展小趣事

Ericsson公司在早期就非常注重市场拓展和全球布局。通过与各国电信运营商建立合作关系,Ericsson成功将其产品和服务推广到了全球各地。特别是在中国市场,Ericsson早在19世纪90年代就与中国签订了供货合同,成为中国通信网络建设的重要参与者。如今,Ericsson已经在中国扎根130余年,成为了唯一一家从1G到5G全程参与中国通信网络建设的企业。

台湾富晶(FORTUNE)公司的发展小趣事
对于老化或损坏的元件进行更换,确保触发器的正常工作。
迪一电子公司的发展小趣事

迪一电子公司成立于2006年,最初只是一家规模较小的半导体电子元器件制造企业。在创业初期,公司面临着资金紧张、技术落后和市场竞争激烈等多重困难。然而,创始人李政坚信半导体行业的发展潜力,带领团队不断研发新产品,提高产品质量,逐渐在市场上赢得了一席之地。

ABB Group公司的发展小趣事

随着市场的不断变化和技术的快速发展,迪一电子公司意识到必须不断创新才能保持竞争力。于是,公司加大研发投入,引进高端技术人才,与国内外知名科研机构合作,成功研发出一系列具有竞争力的新产品。这些新产品不仅提高了公司的市场占有率,还为公司赢得了良好的口碑。

Hsuan Mao Technology Co公司的发展小趣事

随着数字化和智能化技术的不断发展,迪一电子公司意识到必须跟上时代的步伐。于是,公司开始推进数字化转型和智能化生产。通过引入先进的生产设备和信息系统,优化生产流程,提高生产效率。同时,公司还注重人才培养和引进,建立了一支高素质的技术和管理团队。这些努力使迪一电子在数字化和智能化方面取得了显著成果,提高了公司的竞争力和市场地位。

ECM [ECM Electronics Limited.]公司的发展小趣事

在竞争激烈的电子行业中,品质是企业生存和发展的关键。ECM Electronics Limited.深知这一点,始终将产品质量放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测、包装等各个环节都严格把关,确保每一件产品都符合高标准的质量要求。正是凭借过硬的产品品质,ECM赢得了客户的信赖和市场的认可。

问答坊 | AI 解惑

用10个漂亮问题完美结束面试

本帖最后由 paulhyde 于 2014-9-15 09:41 编辑 在面试结束前,大多数的主考官都会丢问题给求职者,最常见的就是:你有没有什么问题或疑问,想要提出来的?无论求职者是否有提出问题,其实,这个问题背后的真正含意,通常是主考官用来测试你对这份 ...…

查看全部问答>

找工作,选择比努力更重要

选择比努力更重要 一个人一生当中最大的幸福在于选择对两件事,一是找对单位、找对老板、找对上司;第二件事就是找对妻子或丈夫。为什么这么说呢?当太阳升起时我们与上司共事,当日落西下,我们与自己的爱人相拥。你永远可以更主动地去影响你的上 ...…

查看全部问答>

FM收音机带有立体声收音

收音部分采用CXA1238M集成电路,灵敏度高,性能稳定,立体收音,功放采用TDA2822M集成电路。 电子制作是综合能力的体现,从中可学到不少技术和经验,欢迎选购制作。一板两用,既可当FM收音机用,又可以当立体声功放用。本板体积小巧玲珑,给用户 ...…

查看全部问答>

求助:51与8155连接问题,模拟端口方式

如题,因为8155只需要低八位地址,P2想留做他用,故想采用普通IO模拟地址总线、ALE、WR等端口方式实现。按照时序图写出程序,但实验失败,在此求助,先谢过啦。代码如下: #include #include sbit AL = P2^0;    //ALE sbit W = P2^2 ...…

查看全部问答>

海浪发电的漂浮灯

除了每天准时升起的太阳时刻不停的将取之不竭能量输送到地球上,时刻波动起伏的广阔海面也蕴含着无穷的能量。这款漂浮在水面的信号灯利用海面的水流驱动发电机产生电力来点亮信号灯,可安置在暗礁周围用于警示或装置在深海边缘提醒游泳者慎入以及在 ...…

查看全部问答>

LCD液晶的操作

1602液晶:2行,每行16个点 主要看“写指令”和“写数据”,因为E=高脉冲,所以在初始化的时候要给E低电平,为高脉冲做准备。 1602液晶的屏幕地址,且以0x80为基地址。 在初始化中的指令码对应下表: 我写的LC ...…

查看全部问答>

如何获取WIFI的NIC_STATISTICS

直接用如下代码获取,返回值为TRUE,得不到数据:         memset(&m_nicdata, 0, sizeof(m_nicdata));         m_nicdata.Size = sizeof(NIC_STATISTICS);         m_nicdata.ptc ...…

查看全部问答>

求购在WINCE6.0下,A4平台上运行的TCPMP源码,价钱面议

在下求购能在WINCE6.0下,A4平台上运行的TCPMP源码. 本人在深圳 南山,西丽. QQ 50580776 EMAIL: gmb_669@163.com…

查看全部问答>

socket编程的问题

是这样的,我最近在ARM上移植了UCOSII,下载了TCP/IP包,目的是利用以太网口实现两个目标板的通信。应用层上用SOCKET编程实现,基于TCP协议。但是问题是server和client怎么也建立不起链接。client方connect函数一直调用失败。server方listen调用成 ...…

查看全部问答>

EVC下将LPBYTE转换成LPWSTR,谢谢!

LPBYTE lpByte; 如何转化为LPWSTR类型呢?…

查看全部问答>