[技术问题解答] KL25切换为VLPR模式不成功

[复制链接]
3056|31
 楼主| flyriz 发表于 2015-7-21 16:00 | 显示全部楼层 |阅读模式
大家好,我这几天在调试KL25低功耗方面的东西,发现进入VLPR总是不成功
首先在system_MKL25Z4.c文件中将头文件中的宏定义做如下修改,改成BLPE时钟模式
QQ截图20150721153157.jpg
然后,再进入main函数后设置时钟分频,core&system clock = 4 MHz;bus&flash clock = 1 MHz;
QQ截图20150721153327.jpg


再进入VLPR;这两个函数是直接从 [Kinetis] 手把手系列之官方例程讲解大全-Kinetis系列\第5-7篇:Kinetis KL25 低功耗模式\KL25 Sample Code 的文件里面复制过来的。
QQ截图20150721153342.jpg



但是功耗没下来,大概在2.7mA,我查看(SMC->PMSTAT & SMC_PMSTAT_PMSTAT_MASK)里面的值的时候,是1,仍然留在RUN模式。
求教各位大神,哪里出问题了?
FSL_TICS_ZJJ 发表于 2015-7-22 12:59 | 显示全部楼层
楼主你功耗测试点没有问题吧?
用的什么板子?
如果你直接用官方的KL25例程是否能够进入VLPR?
 楼主| flyriz 发表于 2015-7-22 14:23 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-7-22 12:59
楼主你功耗测试点没有问题吧?
用的什么板子?
如果你直接用官方的KL25例程是否能够进入VLPR? ...

我们自己做的。
但是这个代码我在KL25-FRDM上也试过的,功耗也差不多是这样。
FSL_TICS_ZJJ 发表于 2015-7-22 14:24 | 显示全部楼层
flyriz 发表于 2015-7-22 14:23
我们自己做的。
但是这个代码我在KL25-FRDM上也试过的,功耗也差不多是这样。 ...

那应该是代码问题,你有没有用FRDM-KL25的代码跑官方进入VLPR模式的程序,然后,你测试功耗是VLPR的功耗吗?
 楼主| flyriz 发表于 2015-7-22 14:27 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-7-22 14:24
那应该是代码问题,你有没有用FRDM-KL25的代码跑官方进入VLPR模式的程序,然后,你测试功耗是VLPR的功耗 ...

测试功耗就是VLPR的功耗。
FRDM-KL25的代码跑官方进入VLPR模式的程序我试过,大概500uA,我现在是想把代码简化下来,流程应该就是这样子的吧。
FSL_TICS_ZJJ 发表于 2015-7-22 14:52 | 显示全部楼层
基本思想是对的,简化后,你直接进入BLPE,然后把busclock输出,用示波器看看,你的时钟对不对。
另外,你的enter_vlpr()函数里面有没有被你动过?
FSL_TICS_ZJJ 发表于 2015-7-22 14:55 | 显示全部楼层
还有一点,非常重要。
在操作进入低功耗之前,你SMC_PMPROT这个寄存器有没有控制过?
你仔细检查下,建议你进入低功耗的时候,先不管debug口,
然后单步走,看看使能SMC_PMPROT中AVLP位是否成功?
SMC_PMPROT这个寄存器是复位后一次操作的,所以如果你之前在启动文件中已经写过,比如都写0,那么后面你再使能,也是无效的在,这样也会导致进入VLPR失败。
以前很多网友不能进入相应功耗,就是忽略了这一点。
所以你自己检查下,看看你进入VLPR的函数中,使能AVLP位是否成功了?
 楼主| flyriz 发表于 2015-7-22 15:36 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-7-22 14:55
还有一点,非常重要。
在操作进入低功耗之前,你SMC_PMPROT这个寄存器有没有控制过?
你仔细检查下,建议你 ...

不能进入VLPR的原因找到了,RM文档中有一段很不起眼的话没看到: QQ截图20150722152950.jpg
在进入之前加上这一条代码就可以了: MCG->C2 |= MCG_C2_IRCS_MASK;    // select fast irc
现在enter_vlpr返回的值是0x4,说明是成功进入VLPR模式的。
但是有一个问题,功耗降低还是不理想啊,在不打开任何外设的情况下,功耗仍然有1.44mA.
是不是哪里还要设置呢?
FSL_TICS_ZJJ 发表于 2015-7-22 15:44 | 显示全部楼层
本帖最后由 FSL_TICS_ZJJ 于 2015-7-22 15:50 编辑
flyriz 发表于 2015-7-22 15:36
不能进入VLPR的原因找到了,RM文档中有一段很不起眼的话没看到:
在进入之前加上这一条代码就可以了: MC ...

把你工程上传给我这边看看,你是使用外部8M晶振对吗。
或者,你把你现在的代码,放到FRDM-KL25的板子上测试下,看看是不是VLPR的功耗。如果同样的代码,自己的板子和官方板子的功耗不一样,那么就是板子的问题了。
FSL_TICS_ZJJ 发表于 2015-7-22 15:59 | 显示全部楼层
把你现在建的工程上传吧,我帮你把VLPR调的成功进入。
 楼主| flyriz 发表于 2015-7-22 16:08 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-7-22 15:44
把你工程上传给我这边看看,你是使用外部8M晶振对吗。
或者,你把你现在的代码,放到FRDM-KL25的板子上测 ...

KL25_LPR_TEST.zip (210.49 KB, 下载次数: 9)

外部8M晶振,FRDM板子上也试过了,1.3mA多一点。
谢谢了!
奥德赛 发表于 2015-7-22 16:44 | 显示全部楼层
有可能cpu就没进入VLPR模式
 楼主| flyriz 发表于 2015-7-22 17:00 | 显示全部楼层
奥德赛 发表于 2015-7-22 16:44
有可能cpu就没进入VLPR模式

enter_vlpr返回的值是0x4,说明是成功进入VLPR模式的。
FSL_TICS_ZJJ 发表于 2015-7-22 17:41 | 显示全部楼层
flyriz 发表于 2015-7-22 17:00
enter_vlpr返回的值是0x4,说明是成功进入VLPR模式的。

你好。
配置MCG->C2 = (uint8_t)0x97U;
你选择的外部晶振的范围不对了。
RANGE0=High frequency range selected for the crystal oscillator .
不要选择为1X,这样功耗就下来了。
 楼主| flyriz 发表于 2015-7-22 19:13 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-7-22 17:41
你好。
配置MCG->C2 = (uint8_t)0x97U;
你选择的外部晶振的范围不对了。

是不是MCG->C2的值不能随便写的啊,我不小心把97写成07了,烧进去之后,再次烧写就会出现: QQ截图20150722185029.jpg
:'(
 楼主| flyriz 发表于 2015-7-22 19:39 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-7-22 17:41
你好。
配置MCG->C2 = (uint8_t)0x97U;
你选择的外部晶振的范围不对了。

在FRDM板子上试了一下,MCG->C2写入0x97的时候功耗下降到1MA以下了。又试着写了一下0x07和0x17,结果这块板子上也出现了上面的问题,祸不单行啊,全玩坏了。大神救救
FSL_TICS_ZJJ 发表于 2015-7-22 20:56 | 显示全部楼层
flyriz 发表于 2015-7-22 19:39
在FRDM板子上试了一下,MCG->C2写入0x97的时候功耗下降到1MA以下了。又试着写了一下0x07和0x17,结果这块 ...

没关系,把FRDM-KL25板子上固件烧成JLINK的,然后用JLINK-commander输入:unlock kinetis
全片擦除下试试。
 楼主| flyriz 发表于 2015-7-23 08:57 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-7-22 20:56
没关系,把FRDM-KL25板子上固件烧成JLINK的,然后用JLINK-commander输入:unlock kinetis
全片擦除下试 ...

我按照这个方法试了,还是不行啊:
QQ截图20150723085016.jpg
QQ截图20150722185029.jpg
昨天你也加班了,:handshake
FSL_TICS_ZJJ 发表于 2015-7-23 09:18 | 显示全部楼层
flyriz 发表于 2015-7-23 08:57
我按照这个方法试了,还是不行啊:

昨天上了下论坛,正好看到你的问题。
你在FRDM板子上,写了MCG_C2为0X07还是17就出问题了?
我这边试下。
 楼主| flyriz 发表于 2015-7-23 09:25 | 显示全部楼层
本帖最后由 flyriz 于 2015-7-23 09:27 编辑
FSL_TICS_ZJJ 发表于 2015-7-23 09:18
昨天上了下论坛,正好看到你的问题。
你在FRDM板子上,写了MCG_C2为0X07还是17就出问题了?
我这边试下。 ...

先写了07,再写17就烧不进去了,我也不确定是哪一个值出的问题。就是在我昨天上传的工程里面改的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

439

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部