嫌文字看着累的话,直接搜账号名嵌入式crafter(小破站 / 某音 / 某红书同号),视频里把讲解的内容和实战操作揉在一起了,比对着文档啃效率高多了。
官方功耗说明
芯片:STC8H1K

添加图片注释,不超过 140 字(

进入掉电模式代码
关闭中断、定时器、串口等外设,然后设置PCON寄存器的PD位进入掉电模式,这些在STC8H的芯片手册中都有详细的寄存器说明和例程,这些不是重点。
/**
* @brief 调用此函数后进入低功耗模式,正常情况下<50uA
* @param void
* @retval void
*/
void enter_powerdown_mode(void)
{
// 禁用中断(降低0.4mA)
IE = 0x00;
IE2 = 0x00;
// 关闭定时器
TR0 = 0; TR1 = 0;
TCON = 0x00; TMOD = 0x00;
// 关闭串口
SCON = 0x00;
// 关闭 ADC(如你使用了)
ADC_CONTR = 0x00;
// 进入掉电模式
PCON |= 0x02; // 设置 PD 位(掉电模式)
_nop_();
_nop_(); //掉电模式被唤醒后,MCU 首先会执行此语句
_nop_();
_nop_();
while(1);
}
现象分析
正常模式
正常全部功能运行模式下,我测得的功耗大概是80mA~104mA范围变化。我们需要让产品在不需要使用时,进入掉电模式,希望能够做到至少耗电流<100uA。

掉电模式
掉电模式下,开启无线通讯模块,耗电流约等于60mA;

掉电模式下,关闭无线通讯模块,耗电流约等于6mA;然后又将一些引脚进行了配置,例如一些外部有上拉电阻到VCC的引脚,掉电模式下,需要配置为高电平,否则浮空或者低电平会形成电流回路,漏电。最后配置完,所测电流在3mA,这仍然离我们的要求太远。

有一些电路它可能在待机模式下仍然消耗很大的电流,例如我们前面提到的无线模块,我们可以通过一个三极管的开关电路,在掉电模式下关闭对无线模块的供电,来保证其在掉电模式下不消耗我们过多的电流。

漏电流电路排查
因为反复验证代码后,发现能够配置的GPIO都按要求配置了,用到的所有外设也都关闭了。但是耗电流仍然不见减少。所以我从硬件上去找原因:
排除了板子上大多数的电路模块,最后锁定在了电池检测的电阻分压电路以及基准电压芯片电路。
ADC电池检测电路分压电阻选型
因为一开始没有考虑低功耗的问题,所以两个串联分压电阻选择了两个1K的,总计2K。耗电流一算发现供电3.7V / 2K = 1.85mA,掉电模式下它也仍然是在耗电的。

我就尝试将R7去掉,发现电流果真降了1点多mA。

添加图片注释,不超过 140 字(可选)
这一块我决定需要重新设计电路,选择电阻的参数。最后选择了一个300K和150K的电阻。锂电池充满电时4.2V的供电,4.2V / 450K = 9.3uA。这个耗电流是我们可以接受的。
采样电路 - 电池电压检测电路(AD采样) - 《嵌入式硬件知识》 - 极客文档

添加图片注释,不超过 140 字(可选)
基准电压芯片
虽然总体的耗电流下降到1mA多,但是仍然还是不行。我继续查找原因,后面发现原来我们选用的基准电压芯片,掉电模式下耗电居然要1mA多。然后我就尝试将其去掉,发现一测确实电流下来了。虽然比芯片手册中提到的0.4uA多很多,但是因为我们的电路板上可能有其他电路会漏电,但是这个耗电流是可接受的范围。

所以我重新选了一颗低功耗的基准电压芯片LM385(10uA)参考电源芯片,这样就能确保产品掉电模式下的耗电流在16.78uA+10uA+9.3uA = 36.08uA 小于100uA的预期。
锂电池的耗电时间计算
例如我们选用的1200mAh的锂电池,而产品掉电模式下耗电是36uA,那么理论上计算,取1080mAh(90%)/ 0.036mA = 1250天,产品在掉电模式下大概可以维持1250天,这对于我们希望产品能够在掉电模式下维持2个月以上完全是足够的。
电池电量续航时间 - 在线计算器 - DigiKey得捷电子


总结
本期内容就分享到这,主要通过STC8H这颗芯片的掉电模式应用,来分析了低功耗模式下硬件电路设计中需要注意的点。
4990

被折叠的 条评论
为什么被折叠?



