打印
[Kinetis]

【经验分享】基于KSDK的KDS PE工程低功耗进入问题讲解

[复制链接]
1576|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FSL_TICS_ZJJ|  楼主 | 2015-6-26 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【经验分享】基于KSDKKDS PE工程低功耗进入问题讲解
一,问题描述
        最近使用KDS做一些基于KSDK的超低功耗程序,发现如果不带PE的工程就能顺利进入低功耗,但是带PE的工程总是无法进入想要的超低功耗。这里以硬件FRDM-K22F120M为平台详细说明问题。新建一个带PE和不带PE的默认工程,不做任何的配置,然后直接进入VLLS3功耗模式,不带PE的工程测试的功耗大概为3.3uA,但是带PE的工程却有大概260uA,进入低功耗VLLS3的代码如下:
void ENTER_VLLS3(void)
{

volatile unsigned int dummyread;

  SMC_PMPROT = SMC_PMPROT_AVLLS_MASK;

  /*Set the STOPM field to 0b100 for VLLS3 mode */

  SMC_PMCTRL &= ~SMC_PMCTRL_STOPM_MASK;

  SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x4);

  SCB->SCR &= (unsigned int)~(unsigned int)(SCB_SCR_SLEEPONEXIT_Msk);

  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;

SMC_STOPCTRL = 0x03;

  /*waitfor write to complete to SMC before stopping core */

  dummyread = SMC_PMCTRL;

  /*Now execute the stop instruction to go into LLS */

  //stop();
  __asm__("WFI"); //KDS
  //asm("WFI");//Iar

}
从功耗的角度看,PE工程也有进入低功耗的表象,但是功耗的值却远远高于VLLS3的功耗,根据功耗情况看,很像是进入了STOP的模式。
那么是什么原因导致PE工程和非PE工程的不同结果呢?
更多内容请查看附件文档:
【经验分享】基于KSDK的KDS PE工程低功耗进入问题讲解.pdf (578.66 KB)

相关帖子

沙发
FSL_TICS_ZJJ|  楼主 | 2015-6-26 16:55 | 只看该作者
小小经验,供大家参考,同时欢迎大家分享自己的宝贵经验。

使用特权

评论回复
板凳
Messi1999| | 2015-6-26 20:50 | 只看该作者
带着问题去解决问题是一个很好的学习方法

使用特权

评论回复
地板
小狗爱吃骨头| | 2015-6-26 21:04 | 只看该作者
讲解的很详细,谢谢楼主分享

使用特权

评论回复
5
史迪威将军| | 2015-6-27 15:00 | 只看该作者
这个经验分享的挺及时的,谢谢楼主

使用特权

评论回复
6
IversonCar| | 2015-6-27 21:34 | 只看该作者
从功耗的角度看,PE工程也有进入低功耗的表象,但是功耗的值却远远高于VLLS3的功耗,根据功耗情况看,很像是进入了STOP的模式。

使用特权

评论回复
7
舒斯特尔| | 2015-6-27 22:05 | 只看该作者
PE工程进入低功耗的配置,很有帮助

使用特权

评论回复
8
大苏牙| | 2015-6-29 08:43 | 只看该作者
不知道低功耗模式下还要不要加while语句

使用特权

评论回复
9
FSL_TICS_ZJJ|  楼主 | 2015-6-29 13:31 | 只看该作者
大苏牙 发表于 2015-6-29 08:43
不知道低功耗模式下还要不要加while语句

如果你要唤醒,那肯定要加while语句。

使用特权

评论回复
10
大苏牙| | 2015-7-5 20:47 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-6-29 13:31
如果你要唤醒,那肯定要加while语句。

知道了,谢谢楼主,我知道我的程序是哪里的问题了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

165

主题

5069

帖子

88

粉丝