找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16010|回复: 1
打印 上一主题 下一主题
收起左侧

STM8L低功耗整理资料

[复制链接]
跳转到指定楼层
楼主
ID:57234 发表于 2015-3-21 02:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
停机状态(无唤醒)

        1. PCB仅焊接MCU,电源3.3V,复位电容(10nF)和一个退偶电容(0.1uF), 程序中将所有GPIO确定输出低电平,主函数中直接halt(),电流约 1.730uA
        2. 在1的基础上,增加一条语句,PWR_UltraLowPowerCmd(ENABLE),或者 PWR->CSR2 = 0x2,再执行halt,电流下降至最低,0.400uA,达到官方指标
        3. 在实际产品上的测试(电路上增加了LCD,LSE晶振等),GPIO确定电平,超低功耗开启,停机状态 halt(),电流约 0.38uA
        4. 在3的基础上,开启RTC日历,电流约 1.3uA
        5. 初始化并开启LCD(未显示),最低电流约 2.25uA (LCD显示参数: 死区时间 7, 持续周期 0, HD=0,LCD外部电源)
        6. LCD正常工作,电流约 5.95uA (LCD显示参数: 死去时间 3, 持续周期 5, HD=0,LCD外部电源),显示效果均衡,LCD电流与LCD玻璃相关
        7. 在6的基础上,HD=1 电流约 18uA

低功耗运行状态        1. 将主时钟切换为 LSI,所有GPIO确定电平,开超低功耗,关RTC、LCD、LSE等,主函数执行 while(1), 电流约 95uA
        2. 在1的基础上,关电压调节器(默认开启),电流约 3.75uA;  达到标称电流值。
        3. 在2的基础上,将主时钟切换为 LSE,电流约为 4.32uA
        4. 在3的基础上,开启RTC,电流约为 4.59uA
        5. 在4的基础上,开启LCD(不显示),电流约为 8.8uA,LCD显示,电流约为 9.25uA

正常工作状态
        1. PCB仅焊接MCU,电源3.3V,复位电容(10nF)和一个退偶电容(0.1uF),程序中将所有GPIO确定输出低电平
        2. 在1的基础上,主函数直接执行 while(1),功耗在 930~950uA 波动 (默认2MHz)
        3. 在2的基础上,while(1) 中加入5个 nop(),功耗降低 200uA(即在730~750uA波动)
        4. 在3的基础上,将时钟配置位16MHz,功耗约为 3.7mA
        5. 在4的基础上,在while(1)中加入 wfi()/wfe(),功耗约为 720uA
        6. 在5的基础上,将时钟配置位1MHz,功耗约为 325uA

说明: 对于 stm8l 这类低功耗芯片,多数时候应该工作在停止或者等待状态,全速运行功耗意义不大,以下两个实际工作模拟
        1. 在一般定时显示程序中(主函数中延时500ms刷新显示),16MHz时钟,延时函数使用wfe功耗约1mA, 使用while(flag)功耗约4.5mA
        2. 在实际低功耗项目中,RTC和LCD一直工作,CPU脉冲工作,RTC约500ms唤醒一次,刷新显示,其电池寿命主要取决于LCD显示效果,正常一般可做到6uA,显示均衡
        3. 以上测试所用的LCD均为4*34段,如果更小的LCD,可能功耗更小
//******************************************************************************************//


其次,我的那个问题也解决了,现在RTC和LCD都能正常工作了,解决方法如下:
软件上:1、使能RTC,日期初始化,这边RTC选择的时钟是LSE
              2、切换时钟(HSI-->LSE)切换时钟程序:
//====================================================================//
// 实现功能:时钟切换:HSE-->LSE
// 参    数:无
// 返 回 值:无
//====================================================================//
void HSE_TO_LSE(void)
{
  CLK_LSEConfig(CLK_LSE_ON);                    //目标CLK 先开启
  while (((CLK->ECKCR)& 0x08)!=0x08);           //等待目标CLK稳定,f=32768Hz
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);         //设定目标 CLK的分频参数
  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSE); //设定此CLK 为切换目标CLK
  CLK_SYSCLKSourceSwitchCmd(ENABLE);            //开始CLK 切换
  CLK->SWCR |=0X01;                             //使能切换中断
  while (((CLK->SWCR)& 0x01)==0x01);            //等待切换后的CLK稳定
  CLK->SWCR &=0X00;
  CLK_HSICmd(DISABLE);                          //关闭原先的 CLK source
}
              3、LCD初始化,输入想要的数据,比如(20140214)
              4、HALT模式设置,设置如下
void Halt_Init(void)//设置低功耗
{
  CLK_HaltConfig(CLK_Halt_FastWakeup,ENABLE);//快速唤醒
  PWR->CSR2 |= 0x06;//ULP=1,FWU=1 //与上句一样
  GPIO_LowPower_Config();//配置GPIO口,这边把不需要的IO口都设置为低电平推挽输出,以降低功耗
}
                 5、halt();//进入低功耗模式
硬件上:
                 1、stm8l152的芯片引脚中的VLCD引脚最好接高电平并且再接一个电容后接地,如图

其中电容为4.7UF。(我之前一直没有接VCC,所以电平一直是低电平,虽然有信号,但是都不能点亮LCD)
                 2、选择好点的32768HZ的晶振,我后来选择的是MC306型号的晶振,之前选的晶振都无*常起振。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:195151 发表于 2017-5-1 00:45 | 只看该作者
怎么木有图
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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