找回密码
 立即注册
查看: 126|回复: 10

低功耗异常,找不出问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-18 11:46:26
已绑定手机

1

主题

4

回帖

31

积分

新手上路

积分
31
发表于 2025-6-18 11:46:26 | 显示全部楼层 |阅读模式
STC8G1K08A进入掉电模式异常,
当我烧写一个什么都没有的空程序进去测得功耗8ma,
然后自己的程序写入代码按条件掉电仍然还有8ma电流,
把芯片吹下来,只测板子电流是60ua,装上芯片就是8ma,
不管开没开睡眠,找不出原因,请教各位工程师们,
第一次使用这个芯片不太了解

这是我的,睡眠条件,以及处理好io口后,开启外部中断然后睡眠等操作

这是我的,睡眠条件,以及处理好io口后,开启外部中断然后睡眠等操作
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-06-28 13:49:44
已绑定手机

72

主题

2016

回帖

4540

积分

荣誉版主

无情的代码机器

积分
4540
发表于 2025-6-18 13:12:51 | 显示全部楼层
用AIAPP-ISP软件上例程测下:
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. #define IDL             0x01                    //PCON.0
  4. #define PD              0x02                    //PCON.1
  5. sbit    P34         =   P3^4;
  6. sbit    P35         =   P3^5;
  7. sfr     P0M1        =   0x93;
  8. sfr     P0M0        =   0x94;
  9. sfr     P1M1        =   0x91;
  10. sfr     P1M0        =   0x92;
  11. sfr     P2M1        =   0x95;
  12. sfr     P2M0        =   0x96;
  13. sfr     P3M1        =   0xb1;
  14. sfr     P3M0        =   0xb2;
  15. sfr     P4M1        =   0xb3;
  16. sfr     P4M0        =   0xb4;
  17. sfr     P5M1        =   0xc9;
  18. sfr     P5M0        =   0xca;
  19. void INT0_Isr() interrupt 0
  20. {
  21.     P34 = ~P34;                                 //测试端口
  22. }
  23. void main()
  24. {
  25.     P0M0 = 0x00;
  26.     P0M1 = 0x00;
  27.     P1M0 = 0x00;
  28.     P1M1 = 0x00;
  29.     P2M0 = 0x00;
  30.     P2M1 = 0x00;
  31.     P3M0 = 0x00;
  32.     P3M1 = 0x00;
  33.     P4M0 = 0x00;
  34.     P4M1 = 0x00;
  35.     P5M0 = 0x00;
  36.     P5M1 = 0x00;
  37.     EX0 = 1;                                    //使能INT0中断,用于唤醒MCU
  38.     EA = 1;
  39.     _nop_();
  40.     _nop_();
  41.     _nop_();
  42.     _nop_();
  43. //    PCON = IDL;                                 //MCU进入IDLE模式
  44.     PCON = PD;                                  //MCU进入掉电模式
  45.     _nop_();
  46.     _nop_();
  47.     _nop_();
  48.     _nop_();
  49.     P35 = 0;
  50.     while (1);
  51. }
复制代码
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-18 11:46:26
已绑定手机

1

主题

4

回帖

31

积分

新手上路

积分
31
发表于 2025-6-18 13:52:46 | 显示全部楼层
erci*** 发表于 2025-6-18 13:12
用AIAPP-ISP软件上例程测下:

这个程序我试过,虽然还有200多ua电流,但感觉应该是进去掉电模式,自己的代码里面不知道为什么进不去,感觉掉电模式就PCON=0x02;这个简单指令啊,为什么会进不去想不明白

点评

把阻挡进入掉电模式的判断条件逐个改成1看是哪个影响的。 进去后加个翻转IO观察下 是不是外部一直在唤醒  详情 回复 发表于 2025-6-18 14:34
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-06-28 13:49:44
已绑定手机

72

主题

2016

回帖

4540

积分

荣誉版主

无情的代码机器

积分
4540
发表于 2025-6-18 14:34:32 | 显示全部楼层
xia*** 发表于 2025-6-18 13:52
这个程序我试过,虽然还有200多ua电流,但感觉应该是进去掉电模式,自己的代码里面不知道为什么进不去, ...

把阻挡进入掉电模式的判断条件逐个改成1看是哪个影响的。
进去后加个翻转IO观察下
是不是外部一直在唤醒
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:111
  • 最近打卡:2025-06-28 08:54:08

740

主题

1万

回帖

1万

积分

管理员

积分
17146
发表于 2025-6-18 15:02:03 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:480
  • 最近打卡:2025-06-28 00:00:59
已绑定手机

80

主题

5214

回帖

9305

积分

超级版主

DebugLab

积分
9305
发表于 2025-6-18 15:05:26 | 显示全部楼层
中断唤醒,检查一下外部输入的信号是否有抖动,接按键的话需要检测按下消抖检测释放再消抖后然后进入省电模式
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-06-28 13:49:44
已绑定手机

72

主题

2016

回帖

4540

积分

荣誉版主

无情的代码机器

积分
4540
发表于 2025-6-18 15:20:36 | 显示全部楼层

用擎天柱测试可能有一堆电阻在漏电流,换最小系统板就干净了,1uA:


  1. #include "Ai8051U.h"
  2. #include "intrins.h"
  3. void Delay100ms(void)        //@24.000MHz
  4. {
  5.         unsigned char data i, j, k;
  6.         _nop_();
  7.         _nop_();
  8.         i = 13;
  9.         j = 45;
  10.         k = 214;
  11.         do
  12.         {
  13.                 do
  14.                 {
  15.                         while (--k);
  16.                 } while (--j);
  17.         } while (--i);
  18. }
  19. void main()
  20. {
  21.                 P_SW2=0x80;
  22.     P0M0 = 0x00; P0M1 = 0xff;P0IE = 0x00;
  23.                 P1M0 = 0x00; P1M1 = 0xff;P1IE = 0x00;
  24.                 P2M0 = 0x00; P2M1 = 0xff;P2IE = 0x00;
  25.                 P3M0 = 0x00; P3M1 = 0xff;P3IE = 0x00;
  26.                 P4M0 = 0x00; P4M1 = 0xff;P4IE = 0x00;
  27.                 P5M0 = 0x00; P5M1 = 0xff;P5IE = 0x00;
  28.                 P6M0 = 0x00; P6M1 = 0xff;P6IE = 0x00;
  29.                 P7M0 = 0x00; P7M1 = 0xff;P7IE = 0x00;
  30.    
  31.     P3M0 = 0x00; P3M1 = 0xf3; P3IE = 0x0c;   //P32 P33准双向,打开数字输入
  32.     P2M0 = 0x00; P2M1 = 0xfe; //P20准双向
  33.     EX0 = 1;                                    //使能INT0中断,用于唤醒MCU
  34.     EA = 1;
  35.    
  36.                
  37.     while (1){
  38.                         if(!P33){
  39.                                 Delay100ms();
  40.                                 if(!P33){
  41.                                         P20 = 1;
  42.                                          _nop_();
  43.                                                                 _nop_();
  44.                                                                 _nop_();
  45.                                                                 _nop_();
  46.                                                 //    PCON = IDL;                                 //MCU进入IDLE模式
  47.                                                                 PCON = PD;                                  //MCU进入掉电模式
  48.                                                                 _nop_();
  49.                                                                 _nop_();
  50.                                                                 _nop_();
  51.                                                                 _nop_();
  52.                                         P20 = 0;
  53.                                 }
  54.                         }
  55.                
  56.                 };
  57. }
复制代码


三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-18 11:46:26
已绑定手机

1

主题

4

回帖

31

积分

新手上路

积分
31
发表于 2025-6-18 15:32:55 | 显示全部楼层
Debu*** 发表于 2025-6-18 15:05
中断唤醒,检查一下外部输入的信号是否有抖动,接按键的话需要检测按下消抖检测释放再消抖后然后进入省电模 ...

是进行消抖过的,我用的定时器扫描按键,判断按键按下设置标志位,睡眠标志位=0时;执行相应配置然后进入掉电

点评

松开时也会抖动,由于此时是外部中断硬件唤醒,无法软件消抖  详情 回复 发表于 2025-6-18 15:39
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:480
  • 最近打卡:2025-06-28 00:00:59
已绑定手机

80

主题

5214

回帖

9305

积分

超级版主

DebugLab

积分
9305
发表于 2025-6-18 15:39:48 | 显示全部楼层
xia*** 发表于 2025-6-18 15:32
是进行消抖过的,我用的定时器扫描按键,判断按键按下设置标志位,睡眠标志位=0时;执行相应配置然后进入 ...

松开时也会抖动,由于此时是外部中断硬件唤醒,无法软件消抖
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:480
  • 最近打卡:2025-06-28 00:00:59
已绑定手机

80

主题

5214

回帖

9305

积分

超级版主

DebugLab

积分
9305
发表于 2025-6-18 15:41:47 | 显示全部楼层
所以必须松开再消抖,之后再进入省电模式
DebugLab
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-28 21:34 , Processed in 0.894022 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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