[APM32F1]

MCU的功耗都去哪了?

[复制链接]
1050|49
手机看帖
扫描二维码
随时随地手机跟帖
JunKook|  楼主 | 2022-8-13 18:17 | 显示全部楼层 |阅读模式
#每日话题# #技术资源#
MCU的低功耗应用已经在各行各业有广泛的应用了,低功耗也是MCU的一项非常重要的指标,然而很多工程师在开发MCU低功耗应用的时候,是不是经常会遇到这些情况,有的是无论如何也降不下去功耗,有的是研发样机阶段可以降低功耗,但是量产阶段会出现部分产品功耗不一致现象,等等。如果大家遇到这些情况千万不要怕,只要我们认真做到以下几步,一切就迎刃而解了。
1. 关闭外设时钟
先说最直观的,也是工程师都比较注意的方面,就是关闭MCU的外设时钟,对于现在市面上出现的大多数的MCU,其外设模块都对应着一个时钟开关。只需要打开这个外设的时钟,就可以正常的使用这个外设了,当然,此外设也就会产生相应的功耗。反之,如果想要让这个外设不产生功耗,只需关闭它的时钟即可。

2. 时钟不要倍频
除了外设模块功率消耗之外,还有一个功耗大户需要注意一下,这就是PLL模块。PLL主要是用来对原始的时钟信号进行倍频操作,从而提高系统的整体时钟,相应的,其功耗也会被提上去。所以在进入低功耗之前,需要关闭PLL模块,从而尽可能的降低MCU的功耗,等到MCU唤醒之后再把时钟切换回去。

3. 将所有GPIO配置为模拟输入
只关闭外设时钟还不能够保证外设不再有耗电,如果GPIO没有做好处理的话,它就会在暗地里偷走功耗,而你却浑然不知。MCU在低功耗模式下,GPIO只有配置为模拟输入的状态,才能将其把功耗降至最低。具体的实现步骤是:
  • 将所有外设时钟打开
  • 将所有GPIO配置为模拟输入模式
  • 关闭所有外设时钟
如果忽略了第一步,那么有可能有些GPIO不能进入到模拟输入状态,所以,在将所有GPIO配置为模拟输入模式之前,一定要先将所有外设时钟打开。相关实现代码如下所示:
GPIO_InitTypeDef  GPIO_InitStructure;
RCC->AHBENR = 0xFFFFFFFF;//开启所有外设
  RCC->APB2ENR = 0xFFFFFFFF; //开启所有外设
  RCC->APB1ENR = 0xFFFFFFFF; //开启所有外设
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//设置烧录口为IO
  GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);        //设置低速时钟口为IO
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//设置所有IO口为模拟输入
  GPIO_InitStructure.GPIO_Speed= GPIO_Speed_2MHz;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  GPIO_Init(GPIOB,&GPIO_InitStructure);
  GPIO_Init(GPIOC,&GPIO_InitStructure);
  GPIO_Init(GPIOD,&GPIO_InitStructure);
  GPIO_Init(GPIOE,&GPIO_InitStructure);
  GPIO_Init(GPIOF,&GPIO_InitStructure);
  GPIO_Init(GPIOG,&GPIO_InitStructure);
  RCC->AHBENR = 0; //关闭所有外设
  RCC->APB2ENR = 0; //关闭所有外设
  RCC->APB1ENR = 0; //关闭所有外设
4. 断开调试器连接
还有比较特殊的原因就是自己在测试功耗的时候MCU还连接着调试器。有可能MCU的调试器引脚会经过调试器产生相当一部分电流,这个时候无论工程师如何努
力,也无法调到自己满意的功耗。所以在测低功耗的时候,一定不要连接调试器,更不能边调试边测电流。

以上就是我们在调试MCU的低功耗时,把可能会影响功耗的因素都规避掉的方法,供大家参考使用,欢迎大家一起探讨交流。

使用特权

评论回复
lajfda001| | 2022-8-16 10:16 | 显示全部楼层
低功耗的情况,最好从代码的最底层入手比较好一些。别的方式都不是很管用。

使用特权

评论回复
udaidfa002| | 2022-8-16 10:59 | 显示全部楼层
感谢楼主深入的分析和总结。学习了。

使用特权

评论回复
jflahdink09| | 2022-8-16 11:15 | 显示全部楼层
感谢楼主的总结,不错的知识点,谢谢。

使用特权

评论回复
duo点| | 2022-8-18 17:33 | 显示全部楼层
感谢楼主的深入剖析

使用特权

评论回复
BDW杜兰特| | 2022-8-29 14:46 | 显示全部楼层
感谢楼主分享

使用特权

评论回复
低功耗的情况,还是需要仔细研究代码的,不错的帖子,感谢楼主分享。

使用特权

评论回复
averyleigh| | 2022-9-3 16:27 | 显示全部楼层
主要在外设消耗了。   

使用特权

评论回复
hudi008| | 2022-9-3 17:42 | 显示全部楼层
MCU外部触发唤醒后,MCU再唤醒耗电较大的模块

使用特权

评论回复
loutin| | 2022-9-3 19:08 | 显示全部楼层
单片机的功耗主要是内部的寄存器了。  

使用特权

评论回复
selongli| | 2022-9-3 19:53 | 显示全部楼层
低功耗的MCU一般都有好几种运行模式

使用特权

评论回复
yorkbarney| | 2022-9-3 21:05 | 显示全部楼层
外设也就会产生相应的功耗

使用特权

评论回复
1988020566| | 2022-9-3 21:57 | 显示全部楼层
CPU 内核        

使用特权

评论回复
quickman| | 2022-9-4 22:00 | 显示全部楼层
周边电路在工作,功耗最大了。

使用特权

评论回复
primojones| | 2022-9-5 12:31 | 显示全部楼层
MCU功耗的来源,其主要由静态功耗及运行功耗两部分组成。

使用特权

评论回复
麻花油条| | 2022-9-7 16:55 | 显示全部楼层
芯片的外设功耗很大

使用特权

评论回复
10299823| | 2022-10-5 18:55 | 显示全部楼层
如何实现掉电和低功耗运行方式?

使用特权

评论回复
mituzu| | 2022-10-5 19:08 | 显示全部楼层
外设也就会产生相应的功耗               

使用特权

评论回复
232321122| | 2022-10-5 19:27 | 显示全部楼层
为什么单片机频率升高,功耗也升高?

使用特权

评论回复
macpherson| | 2022-10-5 20:07 | 显示全部楼层
超低功耗MCU如何降低功耗               

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:极海半导体
简介:珠海极海半导体有限公司是一家致力于开发工业级/车规级微控制器、模拟与混合信号IC及系统级芯片的集成电路设计型企业。极海团队拥有20年集成电路设计经验和嵌入式系统开发能力,可为客户提供核心可靠的芯片产品及方案,实现准确感应、安全传输和实时控制,助力客户在智慧家居、高端消费电子、工业控制、汽车电子、智慧能源以及通信设施等领域的拓展创新。

15

主题

55

帖子

1

粉丝