找回密码
 立即注册
楼主: sky999

怎么降低功耗延长电池用时 | 应该使用 主时钟停振的/省电模式

[复制链接]

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2024-3-19 09:29:26 | 显示全部楼层
神*** 发表于 2024-3-19 08:59
下面这个测试程序,只有 STC8H耗电,测试下
===板上其他外围器件拆除

测试这个程序,只有0.05mA,怪了,哪里出了问题了
回复 支持 反对

使用道具 举报 送花

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2024-3-19 09:30:58 | 显示全部楼层
电子DI*** 发表于 2024-3-19 08:59
0.83ma?你这个进入睡眠模式之前IO模式和外设使能寄存器那些都关了嘛?

IO全部设置为标准模式了呀。还有其他要设置的吗
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:57
  • 最近打卡:2025-05-04 08:52:05

718

主题

1万

回帖

1万

积分

管理员

积分
15656
发表于 2024-3-19 09:38:02 | 显示全部楼层
先焊个空板,只有 电源+MCU, 先调到 <1uA,
再一个器件,一个器件的 过
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:516
  • 最近打卡:2025-05-04 05:36:32

24

主题

517

回帖

1002

积分

荣誉版主

积分
1002
发表于 2024-3-19 09:38:36 | 显示全部楼层
修改原理图吧。
增加一个PMOS管,用空闲的IO口,进入睡眠模式之前将NTC的电源关了。
回复 支持 反对

使用道具 举报 送花

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2024-3-19 09:48:03 | 显示全部楼层
神*** 发表于 2024-3-19 09:38
先焊个空板,只有 电源+MCU, 先调到

不用,测试你上面发的那个程序,只有0.05mA,我觉得这样就可以,但是不知道0.83mA到底是程序上哪来的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:57
  • 最近打卡:2025-05-04 08:52:05

718

主题

1万

回帖

1万

积分

管理员

积分
15656
发表于 2024-3-19 09:51:14 | 显示全部楼层
你自己先拆掉外围电路,再 1个个往上加,
这个靠你自己先做减法,然后再做加法了,
都是这样成高手的



先减到 < 1uA, 扎实基本功
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-05-03 23:41:15

73

主题

5884

回帖

1万

积分

超级版主

积分
12087
发表于 2024-3-19 09:54:09 | 显示全部楼层
sky*** 发表于 2024-3-19 08:51
试了,是PCON = 0X02;指令对吧?
可是不知道为什么,我明明在进入睡眠模式前,关闭了所有中断,
测量电流 ...

进入睡眠命令序列:
PCON |= 0x02;   //进入睡眠
_nop_();   //至少3个NOP
_nop_();
_nop_();

另外,你的外围电路要关闭耗电。可以只测MCU。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-02 23:40:52

0

主题

336

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-3-19 10:53:55 | 显示全部楼层
大电容有可能有漏电的,还有省电模式下所有IO口设置成高阻输入,并且关闭数字输入
回复 支持 反对

使用道具 举报 送花

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2024-3-19 11:23:55 | 显示全部楼层
梁*** 发表于 2024-3-19 09:54
进入睡眠命令序列:
PCON |= 0x02;   //进入睡眠
_nop_();   //至少3个NOP

能不能帮我看下,下面这段代码到底有什么问题?因为只要加上这段代码就是0.83mA,去掉就是0.05mA
  1. TSTH00 = 0x3800;
  2.         TSRT        =        0;
  3.         TSCHEN1        =        0X01;                //0000 0010                TK0/P10
  4.         TSCHEN2        =        0X00;               
  5.         TSCFG1  =         0X33;        //(7<<4) + 7 ;        //开关电容工作频率 = fosc/(2*(TSCFG1[6:4]+1)), 放电时间(系统时钟周期数) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最小3
  6.         TSCFG2  =         3;                //配置触摸按键控制器的内部参考电压(AVCC的分压比), 0(1/4)  1(1/2)  2(5/8)  3(3/4)
  7.         TSWUTC        =        0XFF;        //3S
  8.         TSCTRL        =        0X8F;        // 0X8C  把C改为F,把重复扫描1次变成4次
  9. IE2 |= 0x80;                //允许触摸按键中断
复制代码


点评

单看这段初始化代码没啥问题。还要注意睡眠前处理,还要有中断函数,请参考我的程序。 // TSCHEN1 = 0x01; //TK0~TK7 仅仅允许K0唤醒 // TSCHEN2 = 0x00; //TK8~TK15 TSCTRL = (1  详情 回复 发表于 2024-3-19 12:54
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-05-03 23:41:15

73

主题

5884

回帖

1万

积分

超级版主

积分
12087
发表于 2024-3-19 12:54:58 | 显示全部楼层
sky*** 发表于 2024-3-19 11:23
能不能帮我看下,下面这段代码到底有什么问题?因为只要加上这段代码就是0.83mA,去掉就是0.05mA

单看这段初始化代码没啥问题。还要注意睡眠前处理,还要有中断函数,请参考我的程序。

        //        TSCHEN1 = 0x01;                //TK0~TK7        仅仅允许K0唤醒
        //        TSCHEN2 = 0x00;                //TK8~TK15
                TSCTRL = (1<<3) + (1<<2) + 0;        //关闭触摸模块, 允许16位数字比较器, 允许低功耗唤醒。 B7: TSGO,  B6: SINGLE,  B5: TSWAIT, B4: TSWUCS, B3: TSDCEN, B2: TSWUEN, B1 B0: TSSAMP

                PCON |= 0x02;        //睡眠
                NOP(5);
        //        P_RUN_LED = ~P_RUN_LED;        //取反指示

        //        TSCHEN1 = 0xff;                //TK0~TK7        允许所有16个键
        //        TSCHEN2 = 0xff;                //TK8~TK15
                TSCTRL = (1<<7) + (1<<3) + (1<<2) + 0;        //开始扫描, 无平均, B7: TSGO,  B6: SINGLE,  B5: TSWAIT, B4: TSWUCS, B3: TSDCEN, B2: TSWUEN, B1 B0: TSSAMP


触摸按键唤醒,1uA/1个键/1秒唤醒,STC触摸MCU, 唤醒【主时钟停振/省电模式】
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5167
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 15:21 , Processed in 0.153460 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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