查看: 2953|回复: 7

[求助] 如何KL02Z关于VLLS0模式问题。

[复制链接]
  • TA的每日心情
    开心
    2016-10-25 10:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    81

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2019-6-10
    发表于 2016-7-7 15:44:15 | 显示全部楼层 |阅读模式
    参照KSDK2.0低功耗例程,自己模仿写了一个进入VLLS0程序,在测电流(没有使用任何外设模块)的时候发现一个现象:1)当没有调用VLLS0函数时测的开发板电流为8.87mA。
    2)调用VLLS0函数时,侧得开发板电流为5.67mA。而我查数据手册上在该模式下电流只有几uA。

    我想问的问题:
    1)我写的函数有没使得开发板进入VLLS0模式。
    2)假如没有进入该模式,那为什么调用VLLS0函数时电流会降低?
    3)假如是进入了,那为什么我测的电流跟数据手册为什么差距如此之大?
    4)那些数据手册上的功耗数据是开发板上测的数据吗?

    万能的版友们,求解答一下小弟的问题。

    程序:
    void VLLS0(void)
    {
      uint8_t reg;
      volatile unsigned int dummyread;
      //允许VLLSx
      SMC->PMPROT = SMC_PMPROT_AVLLS_MASK;
      //是否开启POR(打开)
      SMC->STOPCTRL |= SMC_STOPCTRL_PORPO_MASK;
      //选择VLLSx
      reg = SMC->PMCTRL;
      reg &= ~SMC_PMCTRL_STOPM_MASK;
      reg |= (kSMC_StopVlls << SMC_PMCTRL_STOPM_SHIFT);
      SMC->PMCTRL = reg;
      //选择VLLS0
      reg = SMC->STOPCTRL;
      reg &= ~SMC_STOPCTRL_VLLSM_MASK;
      reg |= ((uint32_t)0 << SMC_STOPCTRL_VLLSM_SHIFT);
      SMC->STOPCTRL = reg;
      //进入STOP模式
        SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;

        dummyread=SMC->PMCTRL;
        dummyread++;
        __DSB();
        __WFI();
        __ISB();
    }


    int main(void)
    {
      //允许VLLSx
    SMC->PMPROT |= SMC_PMPROT_AVLLS_MASK;

    VLLS0();  
      while(1)
      {}

    }







    我知道答案 目前已有7人回答

    VLLS0的电流特性

    VLLS0的电流特性
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-25 10:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    81

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2019-6-10
     楼主| 发表于 2016-7-7 15:47:12 | 显示全部楼层
    路过的版友看一看,顺便帮忙顶顶帖子。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24861
    最后登录
    2025-7-18
    发表于 2016-7-7 16:25:22 | 显示全部楼层
    从数据上看,楼主的板子肯定是没有进入低功耗的(如果测试点是正确的话),我建议楼主先用官方例程测试一下,电流显示是否跟数据手册给出的数据相符,然后在对照例程与你自己的代码,找出代码出错的地方。
    KSDK 中有KL02低功耗的例程:
    http://www.nxp.com/zh-Hans/produ ... ab=Design_Tools_Tab
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-25 10:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    81

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2019-6-10
     楼主| 发表于 2016-7-7 16:55:36 | 显示全部楼层
    小恩GG 发表于 2016-7-7 16:25
    从数据上看,楼主的板子肯定是没有进入低功耗的(如果测试点是正确的话),我建议楼主先用官方例程测试一下 ...

    版主,这个就是参考KSDK2.0低功耗例程所写的。官方例程我也看了,它的配置跟我参考KSDK后写的基本一样。
    两个例程里面需要用到USB供电,并且使用模拟串口发送数据选择进入某种模式,这样就测不了电流。
    我想知道我的程序那里出错了。例程都看了不知多少遍了,但是就是不知那里出错了。我测试的方法:直流电源先串联万用表,再接入到开发板。
    版主能否看看我是那里出错了?



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-25 10:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    81

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2019-6-10
     楼主| 发表于 2016-7-7 17:05:53 | 显示全部楼层
    足球爱好者 发表于 2016-7-7 15:47
    路过的版友看一看,顺便帮忙顶顶帖子。

    谢谢版友顶帖
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24861
    最后登录
    2025-7-18
    发表于 2016-7-8 09:41:53 | 显示全部楼层

    楼主可以试试以下的代码:

    /***************************************************************/
    /* VLLS0 mode entry routine. Puts the processor into
    * VLLS0 mode from normal run mode or VLPR.
    *
    * Mode transitions:
    * RUN to VLLS0* VLPR to VLLS0
    *
    * NOTE: VLLSx modes will always exit to RUN mode even if you were
    * in VLPR mode before entering VLLSx.
    *
    * Wake-up from VLLSx mode is controlled by the LLWU module. Most
    * modules cannot issue a wake-up interrupt in VLLSx mode, so make
    * sure to setup the desired wake-up sources in the LLWU before
    * calling this function.
    *
    * Parameters:
    * PORPO_value - 0 POR detect circuit is enabled in VLLS0
    * 1 POR detect circuit is disabled in VLLS0
    */
    /***************************************************************/
    void enter_vlls0(unsigned char PORPO_value )
    {
    volatile unsigned int dummyread;
    /* Write to PMPROT to allow all possible power modes */
    SMC_PMPROT = SMC_PMPROT_AVLLS_MASK;
    /* Set the STOPM field to 0b100 for VLLS0 mode */
    SMC_PMCTRL &= ~SMC_PMCTRL_STOPM_MASK;
    SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x4);
    /* set VLLSM = 0b00 */
    SMC_VLLSCTRL = (PORPO_value <<SMC_VLLSCTRL_PORPO_SHIFT)
    | SMC_VLLSCTRL_VLLSM(3);
    /*wait for write to complete to SMC before stopping core */
    dummyread = SMC_VLLSCTRL;
    /* Set the SLEEPDEEP bit to enable deep sleep mode (STOP) */
    SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;

    #ifdef CMSIS
    __wfi();
    #else
    /* WFI instruction will start entry into STOP mode */
    asm("WFI");
    #endif

    }

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-25 10:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    81

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2019-6-10
     楼主| 发表于 2016-7-8 16:53:43 | 显示全部楼层
    本帖最后由 足球爱好者 于 2016-7-8 17:07 编辑
    小恩GG 发表于 2016-7-8 09:41
    楼主可以试试以下的代码:

    /***************************************************************/

    版主,参考你给的代码,我做了些修改,但是还是不行。仿真的时候,快速运行时,程序直接死在VLLS0函数里面,一步一步仿真的时候就可以运行完VLLS0。我测试电流的时候跟以前也一样,电流还是几mA。下图是我的测量电流的方法。程序是基于KSDK2.0的。版主,你好人做到低帮帮我看看错在那里了?我最近被低功耗搞得头都大了,麻烦版主指点一下迷津。
    QQ图片20160708152333.jpg

    VLLS0.zip

    5.89 MB, 下载次数: 1, 下载积分: 威望 1

    (参考手册2)KL02 Sub-Family Reference Manual.pdf

    13.83 MB, 下载次数: 12, 下载积分: 威望 1

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24861
    最后登录
    2025-7-18
    发表于 2016-7-8 19:51:16 | 显示全部楼层
    足球爱好者 发表于 2016-7-8 16:53
    版主,参考你给的代码,我做了些修改,但是还是不行。仿真的时候,快速运行时,程序直接死在VLLS0函数里面 ...

    测试电流的时候,不要连上仿真器,这点也要注意的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 22:51 , Processed in 0.104314 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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