STC8H低功耗研究

本文只研究,STOP/掉电模式下 STC8H的功耗实验

最近又花费3天时间(大无语o(╥﹏╥)o),解决一个项目低功耗的问题,顺便研究下,裸片的各种情况的功耗。

测试ICSTC8H1K08
加载电压3.3V
测试工具万用表VC890C 直流电源

测试表格

掉电模式 无唤醒

测试条件电流值
掉电模式 无唤醒 GPIO推挽输出 引脚悬空0.5uA
掉电模式 无唤醒 P32 高阻输入 引脚悬空0.5uA
掉电模式 无唤醒 P32 高阻输入 引脚引出很长导线5~15uA
掉电模式 无唤醒 P32 高阻输入 引脚接地0.5uA
掉电模式 无唤醒 P32 高阻输入 引脚接VDD0.5uA
掉电模式 无唤醒 P32 高阻输入 引脚上拉 100K0.5uA
掉电模式 无唤醒 P32 高阻输入 引脚下拉 100K0.5uA
掉电模式 无唤醒 P32 高阻输入 引脚模拟值 (0到VDD 中间的值)折合30uA(去掉外设电流)
掉电模式 无唤醒 P32 高阻输入 引脚模拟值 输入使能关闭折合0.5uA(去掉外设电流)

掉电模式 定时唤醒

测试条件电流值
掉电模式 定时唤醒 GPIO推挽输出 引脚悬空1.5uA
掉电模式 定时唤醒 P32 高阻输入 引脚悬空1.5uA
掉电模式 定时唤醒 P32 高阻输入 引脚引出很长导线5~15uA
掉电模式 定时唤醒 P32 高阻输入 引脚接地1.5uA
掉电模式 定时唤醒 P32 高阻输入 引脚接VDD1.5uA
掉电模式 定时唤醒 P32 高阻输入 引脚上拉 100K1.5uA
掉电模式 定时唤醒 P32 高阻输入 引脚下拉 100K1.5uA
掉电模式 有唤醒 P32 高阻输入 引脚模拟值 (0到VDD 中间的值)折合31uA(去掉外设电流)
掉电模式 有唤醒 P32 高阻输入 引脚模拟值 输入使能关闭折合1.5uA(去掉外设电流)

其他测试条件+掉电模式 定时唤醒

测试条件电流值
设置TIMER+掉电模式 定时唤醒 P32 高阻输入 引脚下拉 100K1.5uA
设置INT0+掉电模式 定时唤醒 P32 高阻输入 引脚下拉 100K1.5uA
设置INT0+掉电模式 定时唤醒 P32 高阻输入 引脚模拟值 输入使能关闭 (这种做法不合理)3.1uA
打开ADC电压+掉电模式 有唤醒 P32 高阻输入 引脚模拟值 输入使能关闭1.5uA
关闭ADC电压+掉电模式 有唤醒 P32 高阻输入 引脚模拟值 输入使能关闭1.5uA

以上测试得出结论 如果是输入模式 PIN脚的电压 不是VDD和地 而是中间值的话 会引起很高的额外电流 如果是模拟值输入 需要配置输入使能关闭。

如果是PIN脚悬空 并且引出很长的导线 会产生额外电流。
长导线如图片:
在这里插入图片描述
为什么长导线会引起额外电流 而悬空引脚不会有 是不是长导线会产生很大的寄生电容?导致额外电流产生?

测试程序如下:

void main(void)    
{
	
	//GPIO 初始化
	//  M1 M0 = 0 0  :  准双向口
	//  M1 M0 = 0 1  :  推挽输出
	//  M1 M0 = 1 0  :  高阻输入
	
	P1M1=0x00;
	P1M0=0xff;
//	P3M1=0x00;
//	P3M0=0xff;
	P3M1=0x04;
	P3M0=0xfB;
	P5M1=0x00;
	P5M0=0x10;

//	InitTIMER0();          //初始化定时器0
//	Int0Init();



	ADC_CONTR = ADC_POWER | ADC10 | ADC_START;   //打开ADC10
	ADC_CONTR &= ~ADC_POWER;		//关闭ADC电源

	WKTCL = 0xfe;                   //设置唤醒周期为16s
	WKTCH = 0xff;                   //使能掉电唤醒定时器

	P_SW2 |= 0x80;
	P3IE = 0XFB;      //降低漏电流

	PCON |= 0x02; 	   //Sleep睡眠模式
	_nop_();
	_nop_();
	_nop_();

	while(1)
	{
		PCON |= 0x02; 	   //Sleep睡眠模式
	   _nop_();
	   _nop_();
	   _nop_();
	};

}

这次量产 我发现一部分板子的低功耗电流,会有高出的正常值,这很大概率是引脚在PCB板上 产生似连非连的不稳定态造成的 但这个却不影响正常的工作 只会影响低功耗静态电流。所以8H芯片 在生产贴片方面,会有相当高的要求。
在这一点上 STC低端的单片机15W比8H 稳定得多,而且不需要额外设置输入使能寄存器。但无奈 15W 价格反而更贵好多。
T喵的 这个问题 困扰我三天 怎么反复验证思路都不对 。最后额外测试出了这个问题 这ONE DAY DAY的。

明天我继续跟踪这个问题 咨询STC原厂工程师 后面会更新电话记录的。

欢迎新手学习,老手指教。 1.使用STC15W408AS。DS1302时钟,闹钟,管码管,掉电模式(进入掉电模式电流<10ua,使用18650供电,3.7-5V电池也可通用)。 2.详细注释,非常适合新手学习。如: sfr WKTCL = 0xaa; //掉电唤醒定时器计时低字节 sfr WKTCH = 0xab; */ //掉电唤醒定时器计时高字节 //----------------------------------------------- //sbit P37 = P3^7; //+分。 //sbit P36 = P3^6; //+时。 //sbit P35 = P3^5; //调闹钟。 //sbit P34 = P3^4; //调时间。//-调时间-按P34按P36放P34放P36才能调时间- //sbit P33 = P3^3; //延时18小时。置值65535. //sbit P32 = P3^2; //确认--延时200S。 //sbit P31 = P3^1; //开关闹钟。 sbit TSCLK = P1^5;//时钟线 接到P37上用杜邦线 sbit TIO = P1^6;//数据线,接到P36上 sbit TRST = P1^7;//使能端,接到P35上 //sbit P54 = P5^4;//运行指示灯 //sbit P55 = P5^5; //蜂鸣器。 //------函数声明---------------- void delayms(uint z); //STC15W204S单片机即1MS延时=0.9989MS-11.0592 void qingling(); //P3清零 void Display(uchar Sec, Min);//显示 void Write_DS1302_DAT(uchar cmd, uchar dat);//写DS1302数据 uchar Read_DS1302_DAT(uchar cmd);////读DS1302数据 uchar Dat_Chg_BCD(uchar dat);//数据转BCD码 uchar BCD_Chg_Dat(uchar dat);//BCD码转换为数据 void tiaotime(); //调时间。 uchar duchi();//读一次小时数 uchar dufen();//读分钟数。 ---------------------------------- / ge = ii; //求余-求里面除整数10后的余数 // shi = ii/10; //求模-求里面有多少个整数倍10. -------------------------------- P11 = 0;//点亮第二位数码管 if(Sec1==1) //在调用显示前用求余法确定Sec1是0还是1 { uu=table[Hour]<>1; //再右移一位左补0,即改变第7位变成0。目的显示:两点。 P2 = uu;//显示第二位数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值