STC8H8K64U进入掉电模式后如何设置IO让电流 <1ua左右 | 已解决
我使用的型号是STC8H8K64U 的,使用的是I/O端口中断掉电唤醒。但是我在进入掉电模式后电流达到了0.5ma,
想请教一下各位如何把这个电流降下去
void main(void)
{
P_SW2 |= 0x80; //允许访问扩展的特殊寄存器,XFR
//PX : 数据寄存器P0,P1,P2....
//PXM0 & PXM1 端口模式寄存器M1:0M0: 0准双向口弱上拉
//PXM0 & PXM1 端口模式寄存器M1:0M0: 1推挽输出强上拉输出
//PXM0 & PXM1 端口模式寄存器M1:1M0: 0高阻输入电阻既不能流入也不能流出
//PXM0 & PXM1 端口模式寄存器M1:1M0: 1开漏模式可以读取外部状态也可对外输出
//PXPU : 上拉使能寄存器 0:禁止上拉1:使能上拉
//PXNCS:施密特触发控制寄存器
//P0IE : 数字信号输入使能寄存器0:禁止数字输入 1:使能数字信号输入
//PXINTE:端口中断使能寄存器
//PXINTF:端口中断标志寄存器
//PXIM0 &PXIM1 端口中断模式寄存器 M1:0 M0:0 下降沿中断支持掉电唤醒
//PXIM0 &PXIM1 端口中断模式寄存器 M1:0 M0:1 上升沿中断支持掉电唤醒
//PXIM0 &PXIM1 端口中断模式寄存器 M1:1 M0:0 低电平中断不支持掉电唤醒
//PXIM0 &PXIM1 端口中断模式寄存器 M1:1 M0:1 高电平中断不支持掉电唤醒
//PXWKUE:端口中断掉电唤醒使能寄存器:0:关闭端口中断掉电唤醒功能 1:使能端口中断掉电唤醒功能
//GPIO_Init();//GPIO初始化函数
WDT_CONTR = 0x00; //关闭看门狗使能
START:
EA = 0; //全局中断允许
GPIO_Init();//GPIO初始化函数
EA = 1; //全局中断允许
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
PCON = 0x02;
_nop_();
_nop_(); 省电模式,I/O口如何设置才省电,进入主时钟停振/省电模式前:
===主时钟停振/省电模式,STC8/STC32系列如何省电
1,不用的I/O口,就是浮空的I/O, 设置为高阻输入,并关闭数字输入,也不怕短路了
但不是所有的芯片,所有的I/O都设计了【禁止数字输入寄存器】,
具体要看 特殊功能寄存器 章节 具体型号,有没有这个【禁止数字输入寄存器】,
没有,那 不用的I/O口,建议设置为【准双向口并对外输出高】
2,用作模拟输入的口,一般是配置成高阻输入,也必须关闭数字输入
===指用作 ADCx外部模拟输入的I/O
===指用作 比较器外部模拟输入的I/O
===省电模式时,他外部来个 1.5V 附近变化的电压,
数字部分不关闭数字输入可能就会产生额外的功耗
3,用作高阻输入的I/O,也必须关闭数字输入
如你I/O外部的输入电平Vx在 【不是逻辑高的电压,也不是逻辑低的电压】
这时内部数字输入电路就会有翻转,就会有几十uA的功耗
关闭数字输入,就不会有功耗
4,I/O外部是高电平的,你如要工作在输出,你就置高
I/O外部是低电平的,你如要工作在输出,你就置低
否则两边的电平电位不同,就会水往低处走,有电流流进或流出
如你I/O外部的输入电平Vx在 MCU_Gnd < Vx < MCU_VCC
这时工作在输出,也会有电流流动
所以进省电模式前,必须改设置为高阻输入,并关闭数字输入
5,如有启动RTC/实时时钟功能,在省电时工作的MCU, 【P1.7/XTALI, P1.6/XTALO】
【P1.7/XTALI, P1.6/XTALO】- 接外部32768-RTC晶振,
这2个口上电默认是高阻输入,可用户程序配置为高阻输入
这个场景有外部32768晶振在振荡,省电模式时必须保持高阻输入,
===并必须关闭数字输入,否则浮空的口,外部不停的在变化,就会产生额外的功耗
6,MCU如有 ADC_VRef+, ADC_VRef+ 不能浮空,否则也会产生额外的电流
省电模式,I/O口如何设置才省电,进入主时钟停振/省电模式前 - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL-144MHz时钟 国芯人工智能技术交流网站 - AI32位8051交流社区
0.7uA, 省电模式,电流实际测试视频,8H8K64U - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL-144MHz时钟 国芯人工智能技术交流网站 - AI32位8051交流社区
神农鼎 发表于 2025-10-20 23:07
0.7uA, 省电模式,电流实际测试视频,8H8K64U - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL ...
我把IO也设置成了准双向口后,按键对应的IO数据寄存器需要设置成高电平,不然无法唤醒掉电模式因为我用的是IO端口中断唤醒,但是在我松开按键重新进入掉电模式后电流一直在0.5ma,只有重新上电的时候才有0.4ua,想问问这个是什么情况 06130613 发表于 2025-10-21 09:44
我把IO也设置成了准双向口后,按键对应的IO数据寄存器需要设置成高电平,不然无法唤醒掉电模式因为我用的 ...
主板上只留单片机你再试一试呢?
我这里测试过主板上只留单片机,进低功耗,肯定是小于1uA的,没有到手册上的0.4uA,不过大概率是我万用表的误差。 _奶咖君_ 发表于 2025-10-21 10:14
主板上只留单片机你再试一试呢?
我这里测试过主板上只留单片机,进低功耗,肯定是小于1uA的,没有到 ...
我试试 _奶咖君_ 发表于 2025-10-21 10:14
主板上只留单片机你再试一试呢?
我这里测试过主板上只留单片机,进低功耗,肯定是小于1uA的,没有到 ...
P0 = 0x7f; //数据寄存器 01
P0M1 = 0x00; P0M0 = 0x00; //端口模式寄存器 准双向口
P0PU = 0x00; //端口上拉使能寄存器 1:开 0:关
P0IE = 0x00; //数字信号寄存器1:使能0:关闭
还是不行,我已经只留单片机,然后把IO设置成准双向口关闭数字寄存器,按键对应的IO设置高电平了,能正常唤醒就是进入掉电模式后功耗还是400ua 06130613 发表于 2025-10-21 11:27
P0 = 0x7f; //数据寄存器 01
P0M1 = 0x00; P0M0 = 0x00; //端口模式寄存 ...
adc电源关了么 _奶咖君_ 发表于 2025-10-21 10:14
主板上只留单片机你再试一试呢?
我这里测试过主板上只留单片机,进低功耗,肯定是小于1uA的,没有到 ...
多谢,找到原因了是因为我进入休眠前没有关闭LVD中断使能
页:
[1]