乐此不疲 发表于 2024-1-4 18:47:46

请教!STC8H8K64U(20引脚)的低功耗电流怎样测量才能得到正确结果

本帖最后由 乐此不疲 于 2024-1-4 18:53 编辑

我测量的结果总是与手册的0.4ua相差很多,以下是我的电路图和程序:




#include "STC8H.h"


//----I/O口配置函数-------------------------
void GPIO_SE(u8 n)
{


    if((n < 1) || (n > 2))
      return;


    if(n == 1) //准双向口模式
    {
      P0M0 = 0x00;
      P0M1 = 0x00;
      P1M0 = 0x00;
      P1M1 = 0x00;
      P2M0 = 0x00;
      P2M1 = 0x00;
      P3M0 = 0x00;
      P3M1 = 0x00;
      P4M0 = 0x00;
      P4M1 = 0x00;
      P5M0 = 0x00;
      P5M1 = 0x00;


      P0IE = 0xff;//开启所有数字通道
      P1IE = 0xff;
      P2IE = 0xff;
      P3IE = 0xff;
      P4IE = 0xff;
      P5IE = 0xff;
    }


    if(n == 2) //高阻态输入模式
    {
      P0M0 = 0x00;
      P0M1 = 0xff;
      P1M0 = 0x00;
      P1M1 = 0xff;
      P2M0 = 0x00;
      P2M1 = 0xff;
      P3M0 = 0x00;
      P3M1 = 0xff;
      P4M0 = 0x00;
      P4M1 = 0xff;
      P5M0 = 0x00;
      P5M1 = 0xff;
      P6M0 = 0x00;
      P6M1 = 0xff;
      P7M0 = 0x00;
      P7M1 = 0xff;


      P0IE = 0x00;//关闭所有I/0口的数字通道
      P1IE = 0x00;
      P2IE = 0x00;
      P3IE = 0x00;
      P4IE = 0x00;
      P5IE = 0x00;
      P6IE = 0x00;
      P7IE = 0x00;
    }
}
//----------------------------------------------
void main(void)
{


    P_SW2 |= 0x80; //使能 XFR 访问


    GPIO_SE(2);//配置所有I/O为高阻态模式、关闭所有I/O口的数字通道


    NOP2();
    PCON = 0x02;//MCU 进入掉电模式
    NOP10();


    while (1);


}


程序烧录时已经去除了STC-ISP软件中的“允许低压复位”的勾选,烧录完成后断开电源正极串入万用表,测量的结果是最低电流0.005mA(约4-5uA),受到某些不确定的干扰时表针会飘动、最大可以达到0.04mA(约40uA)。过程中如果用手触摸多个I/O口(TSSOP封装的芯片太小无法触摸单个引脚)时电流迅速升高并稳定在1.7mA。
需要说明的是我用MF47指针万用表是无法测出精确结果的,测量的目的也只是想粗略判断一下电流范围的,只要结果能稳定在几个微安就可以满足要求了。不知道我的实验哪里有问题请大神指点,先谢了!

神农鼎 发表于 2024-1-4 19:07:23



省电模式,I/O口如何设置才省电,进入主时钟停振/省电模式前 - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL-144MHz时钟 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

乐此不疲 发表于 2024-1-5 10:52:18

神农鼎 发表于 2024-1-4 19:07
省电模式,I/O口如何设置才省电,进入主时钟停振/省电模式前 - 电源/复位/省电模式/外部晶振/内部时钟/对 ...

你好,我就是参照这贴里说的(也是手册上的内容)测试的,尤其是这一句:“总之,省电模式时,I/O尽量 高阻输入并关闭数字输入”,我在程序里将所以I/O都配置成了高阻+关闭数字通道模式,另外和我的电路图中一样,片外只加了32k晶振和电容而且没有配置初始化RTC功能,其他引脚都是浮空状态。

神农鼎 发表于 2024-1-5 10:56:35


还有这些 I/O,要全部处理:










社区闲人 发表于 2024-1-5 11:19:45

用STC8H8K64U 就不要过分追求超低功耗。
因为STC8H8K64U有8K的RAM, 有USB功能,有64K的FLASH, 支持这些都要消耗电流的。
目前,STC8G1K08A的低功耗做的最好。

神农鼎 发表于 2024-1-5 12:07:35

STC8H8K64U 的省电模式肯定《 1uA的 !
40uA ? 肯定是其他问题

乐此不疲 发表于 2024-1-6 18:30:50

神农鼎 发表于 2024-1-5 12:07
STC8H8K64U 的省电模式肯定《 1uA的 !
40uA ? 肯定是其他问题
你好,经过再三测试STC8H8K64U单片机的I/O口全部浮空状态下的省电模式电流小于1uA是真实有效的,但我最终得到这个结果的端口设置却与资料所说的配置(高阻输入模式)有所不同,那就是1.将所有I/O口配置为准双向模式。2.关闭所有I/O口的数字输入功能。此时单片机电流稳定在1uA以下(指针万用表估测值,0.05mA挡表针微动)。

神农鼎 发表于 2024-1-6 18:59:11

乐此不疲 发表于 2024-1-6 18:30
你好,经过再三测试STC8H8K64U单片机的I/O口全部浮空状态下的省电模式电流小于1uA是真实有效的,但我最终 ...

搞定就行,准双向口,可以

神农鼎 发表于 2024-1-6 19:00:33

省电模式,I/O口如何设置才省电,进入主时钟停振/省电模式前:
===主时钟停振/省电模式,STC8/STC32系列如何省电
1,不用的I/O口,就是浮空的I/O, 关闭数字输入
2,用作模拟输入的口,一般是配置成高阻输入,也必须关闭数字输入
   ===指用作 ADCx外部模拟输入的I/O
   ===指用作 比较器外部模拟输入的I/O
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个口上电默认是高阻输入,可用户程序配置为高阻输入
   省电模式时必须保持高阻输入,并必须关闭数字输入

总之,省电模式时,I/O尽量 高阻输入并关闭数字输入

乐此不疲 发表于 2024-1-8 13:37:28

神农鼎 发表于 2024-1-6 19:00
省电模式,I/O口如何设置才省电,进入主时钟停振/省电模式前:
===主时钟停振/省电模式,STC8/STC32系列如 ...

多谢,测试已经完成了,片内RTC启用后省电模式电流2-3uA这个数据也核实了,不错,STC8H8K64U是一款非常不错的单片机。
页: [1]
查看完整版本: 请教!STC8H8K64U(20引脚)的低功耗电流怎样测量才能得到正确结果