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

2019-07-21 06:35发布

我最近做了一个小东东,
利用NRF24L01接收主机采集的数据,
然后根据数据情况输出声光报警,
这个声光报警器我想利用电池供电,
用的是某宝号称功耗最小的硬币般大小的C8T6核心板,
但工作电流也有30mA以上,
加上NRF24L01等,正常工作电流就有近50mA,
用3.7V的18650电池供电,感觉撑不了一天,
我想请教一下,
这个50mA的电流正常吗?
接收数据的频度差不多1分钟一次,
我需要让MCU进入休眠模式,
然后接收到数据后,中断唤醒吗?
如果让MCU进入休眠模式,
NRF24L01应该处于接收模式吧?那如何降低NRF24L01的功耗呢?
大家一般是如何做的呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
warship
1楼-- · 2019-07-22 04:45
修改了程序,增加了STOP模式,
电流从46mA减少至17mA,
看起来这十多毫安,基本上是NRF24L01的接收电流,
暂时还没有进一步减少电流的方法。
warship
2楼-- · 2019-07-22 08:09
进入STOP模式的方法在这里分享一下:
1、初始化时打开电源管理的RCC时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

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

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

warship
3楼-- · 2019-07-22 08:36
在恢复系统时钟时,走了一点弯路,
使用的方法是调用系统时钟初始化程序SystemInit()
结果出现了莫名其妙的问题.
最后在网上找到了如下时钟恢复函数,才获得成功:
warship
4楼-- · 2019-07-22 09:27
 精彩回答 2  元偷偷看……
lvkanger
5楼-- · 2019-07-22 10:45
warship 发表于 2018-6-24 13:25
看NRF24L01的用户手册,
好像接收模式比发射模式耗电还大,不理解中!!!
接收模式,电流平均在8.4mA
...

NRF24L01待机模式不能接收数据吗?这个需要研究下手册,或者实际测试一下。十几个mA的电流实在是有点高啊。像你这样一个系统,应该在几个mA是比较正常的。NRF24L01不太了解,需要你自己深入研究下了!
Cindre鞡
6楼-- · 2019-07-22 12:59
楼主,你现在MCU在STOP模式有17mA了?你可以试试吧gpio全部设置为AIN模式,仅保留唤醒io,然后唤醒之后恢复,功耗有惊喜

一周热门 更多>