打印
[技术问题解答]

求助:KL05低功耗模式转换

[复制链接]
2941|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在调试kl05单片机低功耗时,参考官方例程,进入VLLS0模式电流值为0.1uA,正常。
进入VLPS模式时,开了定时器LPTMR , 1秒唤醒一次进行AD采样,电流在300uA左右,正常。
但是  我先进入VLPS模式,检测8次AD后,在进入VLLS0模式,外部LLU中断唤醒后电流跑到5mA,有时候他自己就能唤醒,电流在3mA左右,不知道进入了什么模式?

求大神解答下

相关帖子

沙发
FSL_TICS_ZJJ| | 2014-10-20 15:25 | 只看该作者
楼主你好。
你只是在官方代码的基础上,在VLPS模式下添加AD采用是吗?
退出之后,有没有关掉AD模块呢?
因为,datasheet的功耗是不计入外设功耗的。

使用特权

评论回复
板凳
eryueniaof|  楼主 | 2014-10-21 17:01 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-10-20 15:25
楼主你好。
你只是在官方代码的基础上,在VLPS模式下添加AD采用是吗?
退出之后,有没有关掉AD模块呢?

你好,我进低功耗的时候关了AD的时钟,因为我在VLPS模式下1秒唤醒一次进行AD采样,电流在300uA左右。
但是一进入深度睡眠唤醒后在进入VLPS模式后就是3mA左右了

使用特权

评论回复
地板
FSL_TICS_ZJJ| | 2014-10-22 10:38 | 只看该作者
eryueniaof 发表于 2014-10-21 17:01
你好,我进低功耗的时候关了AD的时钟,因为我在VLPS模式下1秒唤醒一次进行AD采样,电流在300uA左右。
但 ...

好的,关于你的问题待会我测试之后会给你回复,还请耐心等待下。

使用特权

评论回复
5
eryueniaof|  楼主 | 2014-10-22 11:00 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-10-22 10:38
好的,关于你的问题待会我测试之后会给你回复,还请耐心等待下。

嗯嗯   ,谢谢啦            

使用特权

评论回复
6
FSL_TICS_ZJJ| | 2014-10-22 13:54 | 只看该作者
eryueniaof 发表于 2014-10-21 17:01
你好,我进低功耗的时候关了AD的时钟,因为我在VLPS模式下1秒唤醒一次进行AD采样,电流在300uA左右。
但 ...

你好。
芯片唤醒后,就会进入到RUN模式,而RUN模式不考虑外设功耗,正常功耗也在5mA左右。
而你说你VLPS模式下唤醒,电流300uA,这个应该是没有唤醒,还在VLPS模式下。
唤醒后就是mA级了,另外你有时候会被误唤醒,应该是你引脚上面有干扰波导致。

使用特权

评论回复
7
eryueniaof|  楼主 | 2014-10-22 14:31 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-10-22 13:54
你好。
芯片唤醒后,就会进入到RUN模式,而RUN模式不考虑外设功耗,正常功耗也在5mA左右。
而你说你VLPS模 ...

是的,300uA是在VLPS模式下,我现在的问题是vlps和VLLS0模式切换的问题。
我的程序是这样的:进入VLPS模式,定时器1秒唤醒一次,检测一次AD,在进入VLPS模式,检测完8次AD后,唤醒关掉定时器和AD时钟,进入VLLS0模式。
现在的问题是:从VLLS0模式唤醒后,程序应该是复位重新跑,结果进入VLPS模式后为3mA了

使用特权

评论回复
8
FSL_TICS_ZJJ| | 2014-10-22 14:56 | 只看该作者
eryueniaof 发表于 2014-10-22 14:31
是的,300uA是在VLPS模式下,我现在的问题是vlps和VLLS0模式切换的问题。
我的程序是这样的:进入VLPS模 ...

那么如果不切换,直接单次进入VLPS,功耗都是正常的是吗?
只不过是从VLLS0唤醒,再进入VLPS,就发现功耗为3mA是吗?
3mA肯定不对,看功耗像是进入wait了。
你用的是什么编译器,我用CW重新做个代码试试。

使用特权

评论回复
9
eryueniaof|  楼主 | 2014-10-22 15:06 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-10-22 14:56
那么如果不切换,直接单次进入VLPS,功耗都是正常的是吗?
只不过是从VLLS0唤醒,再进入VLPS,就发现功耗 ...

嗯,单个进入低功耗模式是正常的,我用的是kill

使用特权

评论回复
10
FSL_TICS_ZJJ| | 2014-10-22 15:09 | 只看该作者
本帖最后由 FSL_TICS_ZJJ 于 2014-10-22 15:12 编辑
eryueniaof 发表于 2014-10-22 15:06
嗯,单个进入低功耗模式是正常的,我用的是kill

你如果直接用官方代码,
进入VLPS,唤醒后进入VLLS0,再进入VLPS功耗多少?
我这边是2.1uA

使用特权

评论回复
11
eryueniaof|  楼主 | 2014-10-22 15:14 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-10-22 15:09
你如果直接用官方代码,
进入VLPS,唤醒后进入VLLS0,再进入VLPS功耗多少? ...

我是从官方代码把这两个低功耗模式copy出来的,我的板子没引串口
直接跑官方代码的话,程序死在了while里了,都没进入main函数
if (mcg_clk_hz < 0x100)
         while(1);

使用特权

评论回复
12
FSL_TICS_ZJJ| | 2014-10-22 15:24 | 只看该作者
eryueniaof 发表于 2014-10-22 15:14
我是从官方代码把这两个低功耗模式copy出来的,我的板子没引串口
直接跑官方代码的话,程序死在了while里 ...

那你先看下这个帖子:
https://bbs.21ic.com/icview-644542-1-1.html
看看你
        if (PMC_REGSC &  PMC_REGSC_ACKISO_MASK)
        PMC_REGSC |= PMC_REGSC_ACKISO_MASK;
这句加了没有?

使用特权

评论回复
13
eryueniaof|  楼主 | 2014-10-22 15:31 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-10-22 15:24
那你先看下这个帖子:
https://bbs.21ic.com/icview-644542-1-1.html
看看你

之前就加了这句话

使用特权

评论回复
14
FSL_TICS_ZJJ| | 2014-10-22 15:41 | 只看该作者
eryueniaof 发表于 2014-10-22 15:31
之前就加了这句话

你把你代码工程发我看看,我在我FRDM-KL05上测试下。

使用特权

评论回复
15
eryueniaof|  楼主 | 2014-10-22 15:58 | 只看该作者
我已经打包了

yp_04_PB4_d_13.zip

346.83 KB

使用特权

评论回复
16
FSL_TICS_ZJJ| | 2014-10-22 17:46 | 只看该作者
eryueniaof 发表于 2014-10-22 15:58
我已经打包了

大致看了下你的代码,看到你PMPROT这个寄存器貌似是分下来操作的。
你是不是想进入哪个模式,就使能哪个模式?
你要知道,这个寄存器是一次写的。
所以你需要一次性允许你所有想要执行的功耗模式,而不是想用的时候再开启。

使用特权

评论回复
17
eryueniaof|  楼主 | 2014-10-22 18:21 | 只看该作者
本帖最后由 eryueniaof 于 2014-10-22 18:45 编辑
FSL_TICS_ZJJ 发表于 2014-10-22 17:46
大致看了下你的代码,看到你PMPROT这个寄存器貌似是分下来操作的。
你是不是想进入哪个模式,就使能哪个 ...

           我试了一下,在刚进入main函数后,配置了一次
SMC_PMPROT = SMC_PMPROT_AVLP_MASK | SMC_PMPROT_AVLLS_MASK;  
我进入两种模式,VLPS和VLLS0模式,但是现象还是一样。   

使用特权

评论回复
18
FSL_TICS_ZJJ| | 2014-10-24 16:09 | 只看该作者
eryueniaof 发表于 2014-10-22 18:21
我试了一下,在刚进入main函数后,配置了一次
SMC_PMPROT = SMC_PMPROT_AVLP_MASK | SMC_PMPRO ...

看了,和这个是没有关系。
但是我试了官方的代码,修改了下,重复进入,功耗都是正确的。按照你的功耗顺序进入,VLLS0复位后,再进入VLPS也是正常的。
这样,你把你代码的UART0加上,每次进入低功耗的时候,测试下当前的时钟模式是PEE还是FEI等。
可以通过读MCG模式读出来的,具体参考官方代码MCG.C中的what_mcg_mode函数。
看看从VLLS0复位后,时钟模式与之前reset的时钟模式是否相同。

使用特权

评论回复
19
eryueniaof|  楼主 | 2014-10-29 16:48 | 只看该作者
本帖最后由 eryueniaof 于 2014-10-29 16:49 编辑
FSL_TICS_ZJJ 发表于 2014-10-24 16:09
看了,和这个是没有关系。
但是我试了官方的代码,修改了下,重复进入,功耗都是正确的。按照你的功耗顺序 ...

您好,我买了官方的开发板,我测试了下官方的IAR低功耗例程。还是存在问题。
我先进VLPS模式,10秒后可以唤醒,唤醒后在进入VLLS0模式(也就是选择c),用PTA7唤不醒。
但是直接进VLLS0模式,PTA7可以唤醒。

我想从VLPS模式切换到VLLS0模式在用PTA7唤醒,不用按复位键,需要怎么改下

使用特权

评论回复
20
FSL_TICS_ZJJ| | 2014-10-29 16:53 | 只看该作者
eryueniaof 发表于 2014-10-29 16:48
您好,我买了官方的开发板,我测试了下官方的IAR低功耗例程。还是存在问题。
我先进VLPS模式,10秒后可以 ...

官方代码IAR工程,在main程序开始的地方加上这句话:
          SMC_PMPROT =  SMC_PMPROT_AVLLS_MASK |
                      SMC_PMPROT_ALLS_MASK  |   
                      SMC_PMPROT_AVLP_MASK;
然后就可以了。

使用特权

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

本版积分规则

5

主题

21

帖子

0

粉丝