OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4480|回复: 24

关于微功耗的问题,大家是如何做的?

[复制链接]

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-6-24 09:12:33 | 显示全部楼层 |阅读模式
1金钱
我最近做了一个小东东,
利用NRF24L01接收主机采集的数据,
然后根据数据情况输出声光报警,
这个声光报警器我想利用电池供电,
用的是某宝号称功耗最小的硬币般大小的C8T6核心板,
但工作电流也有30mA以上,
加上NRF24L01等,正常工作电流就有近50mA,
用3.7V的18650电池供电,感觉撑不了一天,
我想请教一下,
这个50mA的电流正常吗?
接收数据的频度差不多1分钟一次,
我需要让MCU进入休眠模式,
然后接收到数据后,中断唤醒吗?
如果让MCU进入休眠模式,
NRF24L01应该处于接收模式吧?那如何降低NRF24L01的功耗呢?
大家一般是如何做的呢?

最佳答案

查看完整内容[请看2#楼]

让MCU处于STOP模式,功耗应该在uA级。无线接收模块NRF24L01处在接收模式的话也不会有太大的功耗。如果NRF24L01带唤醒信号是可以唤醒MCU的,如果不带唤醒信号,可以用串口去唤醒MCU
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7571
金钱
7571
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-6-24 09:12:34 | 显示全部楼层
让MCU处于STOP模式,功耗应该在uA级。无线接收模块NRF24L01处在接收模式的话也不会有太大的功耗。如果NRF24L01带唤醒信号是可以唤醒MCU的,如果不带唤醒信号,可以用串口去唤醒MCU
回复

使用道具 举报

13

主题

303

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2276
金钱
2276
注册时间
2015-2-3
在线时间
562 小时
发表于 2018-6-24 09:44:07 | 显示全部楼层
我最近也在做低功耗产品,给以下几点:
1.在电流大的device上面的VCC加个MOS管,当不检测或者睡眠模式的时候把所有的device的电源断掉(如果不断电,就算不去读取device的数据还是有电流的)
2.有些不舍需要实时读取的数据量,不要读取太频繁
3.空闲的时候降低频率
4.不要在同一时刻把所有的电源打开,读哪个device的数据开哪个电源,然后关闭
STM32/LPC1788/51
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-24 12:07:27 | 显示全部楼层
北极圈的黄昏 发表于 2018-6-24 09:44
我最近也在做低功耗产品,给以下几点:
1.在电流大的device上面的VCC加个MOS管,当不检测或者睡眠模式的时 ...

感谢回答,
您说的这些情况是对外设电源的控制,
我现在急于解决的是MCU的运行策略,
至于外设,我目前基本只有NRF24L01,
它自身就是待机、掉电等多种低功耗模式,
但是我平时是需要它接收2.4G无线数据的,
这些低功耗模式好像又用不上。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

3

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2018-4-22
在线时间
39 小时
发表于 2018-6-24 13:17:02 | 显示全部楼层
在STOP模式是无法使用,串口唤醒的.只能使用外部中断,或者RTC唤醒. 还有就是把不需要的IO口配置到低消耗的状态,这个需要根据外部电路连接来看.  你搜下STOP模式网上的文章一大堆教你怎么做低功耗的. NRF24L01不知道带不带低功耗和前导码唤醒这些功能,如果RF上允许延时响应,待机模式下做到电流是1MA以下应该不难.
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-24 13:25:35 | 显示全部楼层
lvkanger 发表于 2018-6-24 12:28
让MCU处于STOP模式,功耗应该在uA级。无线接收模块NRF24L01处在接收模式的话也不会有太大的功耗。如果NRF24 ...

看NRF24L01的用户手册,
好像接收模式比发射模式耗电还大,不理解中!!!
接收模式,电流平均在8.4mA

另外,请教一下:
我现在NRF24L01接收使用外部中断模式,
查MCU好像停止模式,可以用外部中断唤醒。
如果我想让MCU用STOP模式的话,
程序应该如何改? 是这样的吗:
1、设置NRF24L01进入接收模式
2、使MCU进入STOP模式
3、当收到数据后,外部中断产生,MCU继续工作
4、处理接收数据,回到1循环。


我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-24 16:24:01 | 显示全部楼层
dqlspzl 发表于 2018-6-24 13:17
在STOP模式是无法使用,串口唤醒的.只能使用外部中断,或者RTC唤醒. 还有就是把不需要的IO口配置到低消耗的状 ...

谢谢您的回答,搜了一下STOP模式,搞清楚了不少问题。
NRF24L01带有低功耗功能,有待机和掉电两种模式,
没有看到前导码唤醒之类的功能,
不知道待机模式下有数据来时,能不能自动被唤醒为接收模式。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-24 18:19:06 | 显示全部楼层
修改了程序,增加了STOP模式,
电流从46mA减少至17mA,
看起来这十多毫安,基本上是NRF24L01的接收电流,
暂时还没有进一步减少电流的方法。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-24 18:25:23 | 显示全部楼层
进入STOP模式的方法在这里分享一下:
1、初始化时打开电源管理的RCC时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

2、NRF24L01接收到数据并处理完成之后,进入STOP模式
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

3、NRF24L01再次接收到数据会产生外部中断,唤醒MCU
在中断服务程序开始处恢复系统时钟

我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-24 18:31:16 | 显示全部楼层
在恢复系统时钟时,走了一点弯路,
使用的方法是调用系统时钟初始化程序SystemInit()
结果出现了莫名其妙的问题.
最后在网上找到了如下时钟恢复函数,才获得成功:
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-24 18:41:29 | 显示全部楼层
static void SYSCLKConfig_STOP(void)
{  
  /* 从STOP模式唤醒后重新配置系统时钟 */
  /* 使能 HSE */
  RCC_HSEConfig(RCC_HSE_ON);
  
  /* 等待HSE时钟就绪 */
  while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET)
  {}
  
  /* 使能PLL */
  RCC_PLLCmd(ENABLE);
  
  /* 等待PLL就绪 */
  while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
  {}
  
  /* 选择PLL作为系统时钟源 */
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  
  /* 等待时钟源配置就绪 */
  while (RCC_GetSYSCLKSource() != 0x08)
  {}
}
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7571
金钱
7571
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-6-25 10:43:22 | 显示全部楼层
warship 发表于 2018-6-24 13:25
看NRF24L01的用户手册,
好像接收模式比发射模式耗电还大,不理解中!!!
接收模式,电流平均在8.4mA
...

NRF24L01待机模式不能接收数据吗?这个需要研究下手册,或者实际测试一下。十几个mA的电流实在是有点高啊。像你这样一个系统,应该在几个mA是比较正常的。NRF24L01不太了解,需要你自己深入研究下了!
回复

使用道具 举报

15

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2014-8-14
在线时间
184 小时
发表于 2018-6-25 14:39:31 | 显示全部楼层
楼主,你现在MCU在STOP模式有17mA了?你可以试试吧gpio全部设置为AIN模式,仅保留唤醒io,然后唤醒之后恢复,功耗有惊喜
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-25 15:14:30 来自手机 | 显示全部楼层
Cindre鞡 发表于 2018-6-25 14:39
楼主,你现在MCU在STOP模式有17mA了?你可以试试吧gpio全部设置为AIN模式,仅保留唤醒io,然后唤醒之后恢复 ...

那些减少不了多少,现在的大头在nrf24l01无线接收,我必须保持它在接收状态,而它的电流在10ma以上
回复

使用道具 举报

15

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2014-8-14
在线时间
184 小时
发表于 2018-6-25 15:18:36 | 显示全部楼层
warship 发表于 2018-6-25 15:14
那些减少不了多少,现在的大头在nrf24l01无线接收,我必须保持它在接收状态,而它的电流在10ma以上

2401是一个方面,我用f1,stop模式,gpio ain,外接一个时钟ic,整体功耗60ua
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-25 18:00:11 | 显示全部楼层
Cindre鞡 发表于 2018-6-25 15:18
2401是一个方面,我用f1,stop模式,gpio ain,外接一个时钟ic,整体功耗60ua

百十uA的量级可以从GPIO的设置上找补点油水,
我现在2401是十几个mA, 这个电流降下来,我就烧高香了,哈哈。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

15

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2014-8-14
在线时间
184 小时
发表于 2018-6-29 11:16:35 | 显示全部楼层
warship 发表于 2018-6-25 18:00
百十uA的量级可以从GPIO的设置上找补点油水,
我现在2401是十几个mA, 这个电流降下来,我就烧高香了,哈 ...

不需要远程唤醒之类的可以加电源控制直接关掉
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-29 13:19:43 来自手机 | 显示全部楼层
Cindre鞡 发表于 2018-6-29 11:16
不需要远程唤醒之类的可以加电源控制直接关掉

2401是接收无线数据的,这些无线数据虽然可能几分钟内都不一定有,但一旦有则必须实时接收响应,所以接收器必须全程守候在接收状态,不可能关断的。
回复

使用道具 举报

46

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2016-3-25
在线时间
365 小时
发表于 2018-6-29 22:13:03 | 显示全部楼层
如果数据量不大,传输速率要求不高。我之前做个一个方案:stm32f103c8t6+CC1101  。CC1101的IRQ口接STM32的WK_UP口,通过CC1101自带的WOR功能,触发STM32唤醒,这样的功耗会低很多。CC1101工作在433频段,经过测试比NRF2401的传输距离远,穿透能力要强
代写STM32各类驱动,DEMO程序
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-6-29 22:29:04 | 显示全部楼层
MCU功耗相对外设来说,微不足道,主要是外设耗电,如无线传输。
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-29 23:36:29 来自手机 | 显示全部楼层
Mr.liu 发表于 2018-6-29 22:13
如果数据量不大,传输速率要求不高。我之前做个一个方案:stm32f103c8t6+CC1101  。CC1101的IRQ口接STM32的 ...

我也是收到数据唤醒C8T6的,关键是2401要一直处于接收状态。您的这个CC1101接收状态耗电多少?
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-29 23:37:05 来自手机 | 显示全部楼层
Acuity 发表于 2018-6-29 22:29
MCU功耗相对外设来说,微不足道,主要是外设耗电,如无线传输。

还真是如此。
回复

使用道具 举报

46

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2016-3-25
在线时间
365 小时
发表于 2018-6-29 23:42:17 | 显示全部楼层
warship 发表于 2018-6-29 23:36
我也是收到数据唤醒C8T6的,关键是2401要一直处于接收状态。您的这个CC1101接收状态耗电多少?

CC1101是自带定时,可以配置。设置一个时间,芯片自已会周期性的监听载波,它并不是一直处于接收。所以功耗会低很多,具体可以看数据手册
代写STM32各类驱动,DEMO程序
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
 楼主| 发表于 2018-6-30 14:24:27 | 显示全部楼层
Mr.liu 发表于 2018-6-29 23:42
CC1101是自带定时,可以配置。设置一个时间,芯片自已会周期性的监听载波,它并不是一直处于接收。所以功 ...

感觉我的项目采取周期性地监听载波的方法不行,
会错过数据接收,
我能够容忍的接收延时最大200ms
但是如此200ms就打开接收一次,感觉就关不关闭无所谓了。
最好有这样的接收状态:时刻保持监听载波,且功耗极低,有载波就唤醒CPU或自动进入接收状态。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

0

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2018-6-17
在线时间
57 小时
发表于 2018-12-21 08:14:10 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 17:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表