你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm8s003低功耗问题求助

[复制链接]
飘落的狙击枪 提问时间:2014-4-14 23:59 /
折腾低功耗已经第四天了,可以说筋疲力尽,没想到这个低功耗竟然卡住了我,看到好多人都可以做到11u我却问题颇多。无奈来此求助。
首先说我遇到的问题。我用主函数来测试功耗,不加其他额外的函数。但是出现了奇葩的问题,无论我怎么改,用asm(“halt”)打算进入停机模式,还是用asm("wfi")进入等待模式,功耗不变,我开始怀疑我的测试方法,最初我是用手持万用表测试的,表上的显示精度可以达到uA,之后我又拿了个源表(吉时利2410)我以为这次没问题了,这次又出了个奇葩的问题,当我用源表供电的时候VCAP竟然没电压,这什么情况,我用示波器看了下,好吧,竟然是斜波,就是方波给电容充电的感觉,可手册上写的应该1.8v。我换上电源供电,1.8v左右,没问题,我又不明白了。原本的问题还没解决,新的问题又来了。我放弃了源表。继续用我的电源供电,用手持万用表测试,想着精度差点就差点吧。可是当我用如下程序(1)测试的时候竟然只有200u,这算上全速了吧。感觉有问题,又换了个程序(2),打算测下什么都关闭,进入到停机状态的电流。结果400多u,我的表出问题了?还是硬件电流出问题了呢。硬件电路我是买的芯片和tssop转接板自己焊的最小系统,没有任何外设。用stlink和stvd都能下载进去程序,并且测试能控制端口,在stlink里面也可以仿真,寄存器的值也都对。我到底哪里没考虑全面。之前对单片机只是简单接触,第一次用st的片子。我觉得我好想要放弃了,原本不应该是问题的问题竟然困扰了我这么多天。希望能有朋友有经验的多帮忙,小弟谢谢啦!
程序(1)
unsigned long int count=0;
void main()
{
  CLK_ICKR|=0X01;//HSI使能
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//预分频8分频得到16M频率
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);//cpu分频系数为1
 
  CLK_PCKENR1&=0X40;
  CLK_PCKENR2&=0X73;//关闭外设时钟  
  
  PA_DDR|=0X0E;
  PA_CR1|=0x0E;
  PA_ODR&=~0x0E;
  PB_DDR|=0X30;
  PB_CR1|=0x30;
  PB_ODR&=~0X30;
 
  PC_DDR|=0XF8;
  PC_CR1|=0xf8;
  PC_ODR&=~0xF8;
 
  PD_DDR|=0X7c;//设为输出
  PD_CR1|=0x7c;//设为推挽
  PD_ODR&=~0x7c;//设为低电平
   WWDG_CR&=0X80;//关闭窗口关门狗
  CPU_CFG_GCR&=0XFE;//关闭swim
  while(1)
  {
    asm("nop");
   }
 
 
}
程序2
unsigned long int count=0;
void main()
{
  CLK_ICKR|=0X01;//HSI使能
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//预分频8分频得到16M频率
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);//cpu分频系数为1
 
  CLK_PCKENR1&=0X40;
  CLK_PCKENR2&=0X73;//关闭外设时钟
  
  
  CLK_ICKR|=0X08;//打开低速时钟信号
 while(!(CLK_ICKR&0X10));//等待LSI准备
 CLK_SWCR|=0X02;//切换使能
 CLK_SWR=0XD2;//设置目标时钟为LSI,需使能LSI_EN选项字节
 while(CLK_SWCR&0X01!=0);//切换忙,等待切换完成
 CLK_SWCR&=~0X08;//清除切换标志
  
  CLK_ICKR&=~0X01;//关闭HSI
 
 
  PA_DDR|=0X0E;
  PA_CR1|=0x0E;
  PA_ODR&=~0x0E;
  PB_DDR|=0X30;
  PB_CR1|=0x30;
  PB_ODR&=~0X30;
 
  PC_DDR|=0XF8;
  PC_CR1|=0xf8;
  PC_ODR&=~0xF8;
 
  PD_DDR|=0X7c;//设为输出
  PD_CR1|=0x7c;//设为推挽
  PD_ODR&=~0x7c;//设为低电平
    WWDG_CR&=0X80;//关闭窗口关门狗
  CPU_CFG_GCR&=0XFE;//关闭swim
    FLASH_CR1&=~0X08;//flash在停机状态掉电
 
  while(1)
  {
     asm("halt");
  }
 
 
}
 
收藏 评论13 发布时间:2014-4-14 23:59

举报

13个回答
dlyt03 回答时间:2014-4-16 22:34:27

RE:stm8s003低功耗问题求助

貌似前面看到一个类似的问题,低功耗指的是芯片,不知楼主测的是芯片还是这个系统?系统除了单片机还有外围器件的功耗
灰小子-1888763 回答时间:2014-4-16 22:44:36

RE:stm8s003低功耗问题求助

在应用中,低功耗的产品不只是采用低功耗的mcu,更多的要依赖于外围电路的低功耗设计
飘落的狙击枪 回答时间:2014-4-16 23:12:23

回复:stm8s003低功耗问题求助

回复第 2 楼 于2014-04-16 22:34:27发表:
貌似前面看到一个类似的问题,低功耗指的是芯片,不知楼主测的是芯片还是这个系统?系统除了单片机还有外围器件的功耗 

我测试的芯片的功耗,我用了一个tssop和DIP的转接板自己焊接了一个最小系统,最小系统只包含了vcap的一个105电容,别的没有,完了我把swim和nrst引脚引出来了,为了下程序,别的就没有了。芯片我通过测试io口的波形,内部程序给一定的波形来验证芯片功能的完整。其他的我就没想到还要有什么考虑的了
飘落的狙击枪 回答时间:2014-4-16 23:11:46

回复:stm8s003低功耗问题求助

回复第 3 楼 于2014-04-16 22:44:36发表:
在应用中,低功耗的产品不只是采用低功耗的mcu,更多的要依赖于外围电路的低功耗设计 

我测试的芯片的功耗,我用了一个tssop和DIP的转接板自己焊接了一个最小系统,最小系统只包含了vcap的一个105电容,别的没有,完了我把swim和nrst引脚引出来了,为了下程序,别的就没有了。芯片我通过测试io口的波形,内部程序给一定的波形来验证芯片功能的完整。其他的我就没想到还要有什么考虑的了
飘落的狙击枪 回答时间:2014-4-19 09:46:42

RE:stm8s003低功耗问题求助

经过这几天的斗争,从功能到功耗进行了全面的测试,最终达到了要求。分享下经验:首先保证你的测试方法正确,我最初的失败在于仪器的问题,因为我手里的源表电压出了点问题,这是我没想到5万多的设备竟然出了点问题。再次首先对功能进行验证,当进入halt状态后,确定由定时器不能唤醒才保证是进入了halt,否则可能只是在while中等待,而没进入halt。当然这两个问题并不要种。比较严重的一个问题就是如果你使用了真正开漏的端口,别忘了加上拉电阻,加了上拉电阻之后再halt状态就不能把这个端口也设为低电平,这是我之前忽略了一点。还有就是看门狗要注意如果需要使用看门狗,在halt之前要喂狗刷新,否则你的电路也会不断复位。这几点希望能对有遇到同样问题的朋友略有帮助。
hzpyl 回答时间:2014-6-10 17:06:26

RE:stm8s003低功耗问题求助

测量电流的表有内阻。
3V输入,经过表后,可能只有2V了(有时需要示波器才能看到)
squall45 回答时间:2014-6-12 17:42:44

RE:stm8s003低功耗问题求助

要低功耗设计,主要考虑几个方面:
1.外设的低功耗,不需要的外设模块,全部关闭。
2.GPIO的处理,不需要的IO最好做悬浮输入处理。
3.主时钟的处理,先降到最低内部LSI时钟,关闭其他不需要的时钟模块。
4.进入低功耗模式。
ataudio 回答时间:2015-1-9 12:33:58
学习。这是好经验,大家齐分享。谢谢楼主。
32F 回答时间:2015-11-11 15:07:41

谢谢楼主共享,学习了
foxglove 回答时间:2015-11-11 16:04:06
经过这几天的斗争,从功能到功耗进行了全面的测试,最终达到了要求。分享下经验:首先保证你的测试方法正确,我最初的失败在于仪器的问题,因为我手里的源表电压出了点问题,这是我没想到5万多的设备竟然出了点问题。再次首先对功能进行验证,当进入halt状态后,确定由定时器不能唤醒才保证是进入了halt,否则可能只是在while中等待,而没进入halt。当然这两个问题并不要种。比较严重的一个问题就是如果你使用了真正开漏的端口,别忘了加上拉电阻,加了上拉电阻之后再halt状态就不能把这个端口也设为低电平,这是我之前忽略了一点。还有就是看门狗要注意如果需要使用看门狗,在halt之前要喂狗刷新,否则你的电路也会不断复位。这几点希望能对有遇到同样问题的朋友略有帮助。
yangjiawei1223 回答时间:2016-4-7 17:06:15
谢谢楼主的分享 !  我还是没弄懂STM8功耗,我接了1621控制液晶, 确定是停机了, 但是电流都是上百uA
无薪税绵 回答时间:2017-2-14 14:18:27
不错的经验分享,学习了。
Fily 回答时间:2017-7-26 17:02:21
提示: 作者被禁止或删除 内容自动屏蔽

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版