打印
[Kinetis]

求助!!飞思卡尔MKL02Z32单片机进VLPS低功耗模式的问题!

[复制链接]
5064|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
goodrenze|  楼主 | 2014-7-10 19:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天调试用MKL02Z32单片机开发的一个简单的小电路板,出现在MCG_C1的IREFSTEN标志位置一时,无法进入VLPS低功耗模式的问题(串口发送一个命令触发进入,用电流表测试电流发现一直是正常运行下的电流4.9mA左右)。把MCG_C1的IREFSTEN标志位清零,就可以进入VLPS模式,此时电流是12uA左右。但是如果把MCG_C1的IREFSTEN标志位清零,在VLPS模式下,就无法用UART0的接收来唤醒CPU了。
请飞思卡尔支持团队或有经验的高工们帮忙解答下这个问题啊,把我整惨了啊,搞了一天都没结果。刚上手该CPU,还请各位多多指教啊。

相关帖子

沙发
goodrenze|  楼主 | 2014-7-11 08:47 | 只看该作者
看过“LQRUG_uart_ex2例程.pdf”的例程代码,看到里面的MCG_C1的IREFSTEN标志位是置一的,不知道这个例程的是否可以正常进入VLPS模式,因为没有官方的试验板,没办法测试。
而且我从RUN模式进入VLPR模式,电流从4.9mA降到570uA,然后从VLPR进入VLPS,居然电流反而增加到1.2mA左右,这时UART0通信正常,获取当前系统运行模式居然是RUN模式,这个又是什么回事?
期待高人帮忙解答啊。

使用特权

评论回复
板凳
FSL_TICS_ZJJ| | 2014-7-11 10:03 | 只看该作者
楼主你好,你用官方的KL02_LowPower_Demo例程,然后把MCG_C1中的IREFSTEN以及IRCLKEN置位,禁止掉程序里的LPTMR,然后烧入芯片,再重新上电运行,看看能不能进入VLPS?
我这边试了是没有问题的,功耗只有2.25uA,在datasheet规定的范围内。
你试试看,如果还有问题,及时告诉我。

使用特权

评论回复
地板
FSL_TICS_ZJJ| | 2014-7-11 10:04 | 只看该作者
楼主你好,你用官方的KL02_LowPower_Demo例程,然后把MCG_C1中的IREFSTEN以及IRCLKEN置位,禁止掉程序里的LPTMR,然后烧入芯片,再重新上电运行,看看能不能进入VLPS?
我这边试了是没有问题的,功耗只有2.25uA,在datasheet规定的范围内。
你试试看,如果还有问题,及时告诉我。

使用特权

评论回复
5
FSL_TICS_ZJJ| | 2014-7-11 10:06 | 只看该作者
楼主,你用KL02的官方代码,不要直接拿KL25的代码,KL02的代码链接:
http://www.freescale.com/webapp/ ... nt_pageType=product

使用特权

评论回复
6
FSL_TICS_ZJJ| | 2014-7-11 10:09 | 只看该作者
goodrenze 发表于 2014-7-11 08:47
看过“LQRUG_uart_ex2例程.pdf”的例程代码,看到里面的MCG_C1的IREFSTEN标志位是置一的,不知道这个例程的 ...

你LQRUG_uart_ex2是KL25的代码吧?
我们有KL02的代码的,KL25和KL02还是有细微差别的,所以请直接使用KL02的代码。
另外,如果功耗不一样,你需要看看你是不是多启动了模块?因为DATASHEET上的功耗是针对内核功耗,没有考虑模块功耗加入。我这边测试KL02的板子,功耗情况,以及IREFSTEN标志置位是正常的。

使用特权

评论回复
7
FSL_TICS_ZJJ| | 2014-7-11 10:10 | 只看该作者
还有,一般我们答问题是在白天的工作时间。

使用特权

评论回复
8
goodrenze|  楼主 | 2014-7-11 10:25 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-11 10:04
楼主你好,你用官方的KL02_LowPower_Demo例程,然后把MCG_C1中的IREFSTEN以及IRCLKEN置位,禁止掉程序里的L ...

我只是参考KL25的代码,在KL02的程序里面做修改。我再用KL02的官方代码测试下吧,有问题会再反馈的。感谢您的回复,谢谢。

使用特权

评论回复
9
FSL_TICS_ZJJ| | 2014-7-11 10:56 | 只看该作者
goodrenze 发表于 2014-7-11 10:25
我只是参考KL25的代码,在KL02的程序里面做修改。我再用KL02的官方代码测试下吧,有问题会再反馈的。感谢 ...

不客气,你先测试下,如果有问题,赶紧告诉我啊。

使用特权

评论回复
10
goodrenze|  楼主 | 2014-7-11 11:49 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-11 10:04
楼主你好,你用官方的KL02_LowPower_Demo例程,然后把MCG_C1中的IREFSTEN以及IRCLKEN置位,禁止掉程序里的L ...

您好!我用KL02-SC.zip中的KL02_LowPower_Demo的工程,由于没有官方开发板,自己的板子不带外部晶振。所以我在工程的freedom.h文件中加了#define NO_PLL_INIT 1的定义,使用内部IRC时钟。因为我的电路板只支持2400bps的波特率,所以我把freedom.h文件中的TERMINAL_BAUD从19200改成了2400。其他地方没做任何改动。
然后将程序烧入我的电路板。可以正常收到一些提示信息。未进任何低功耗时,电源端电流是2.8A。按数字键5进入VLPR模式时,变成150uA。正常返回提示信息。
然后测试进入VLPS模式的时候,蛋疼的事情又出现了。我发送7进入VLPS模式,命令发送之前是2.8A,命令发送之后变成了3.15A,返回提示是enter into VLPS mode--。这到底是什么回事啊!之后就是LPTMR的中断返回。

使用特权

评论回复
11
FSL_TICS_ZJJ| | 2014-7-11 12:38 | 只看该作者
goodrenze 发表于 2014-7-11 11:49
您好!我用KL02-SC.zip中的KL02_LowPower_Demo的工程,由于没有官方开发板,自己的板子不带外部晶振。所 ...

好的,我待会也用内部时钟然后测试试试,测完给你回复,耐心等待下哦。

使用特权

评论回复
12
goodrenze|  楼主 | 2014-7-11 12:47 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-11 10:10
还有,一般我们答问题是在白天的工作时间。

看来还是外企爽啊,不什么加班假期还多。卡尔兄能否给推荐推荐啊。

使用特权

评论回复
13
goodrenze|  楼主 | 2014-7-11 12:48 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-11 12:38
好的,我待会也用内部时钟然后测试试试,测完给你回复,耐心等待下哦。 ...

好的,非常感谢。

使用特权

评论回复
14
FSL_TICS_ZJJ| | 2014-7-11 12:53 | 只看该作者
goodrenze 发表于 2014-7-11 12:47
看来还是外企爽啊,不什么加班假期还多。卡尔兄能否给推荐推荐啊。

我们论坛也发了招聘贴呢:https://bbs.21ic.com/icview-708290-1-1.html
另外,不久前,HR在我们另外的坛子发过招聘贴:
http://www.freescaleic.org/bbs/forum_1292.html
最下面三个帖子,你看看,感兴趣就应聘啊。

使用特权

评论回复
15
goodrenze|  楼主 | 2014-7-11 14:05 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-11 12:53
我们论坛也发了招聘贴呢:https://bbs.21ic.com/icview-708290-1-1.html
另外,不久前,HR在我们另外的坛 ...

看看先。
那个问题帮忙试了没?
我现在在例程中想把UART0的时钟改成MCGIRCLK,不用MCGOUTCLK。在sysinit.c的SIM_SOPT2 |= SIM_SOPT2_UART0SRC(1);改成了SIM_SOPT2 |= SIM_SOPT2_UART0SRC(3);把接下来的uart0_init()中的UART0_C4的OSR改成了5,然后加了句UART0_C5 |= UART0_C5_BOTHEDGE_MASK;重新编译了下,发现程序死在uart0_putchar()的while语句里面了,这个是什么回事?波特率和收发都使能了,为什么不能成功发送数据?

使用特权

评论回复
16
FSL_TICS_ZJJ| | 2014-7-11 16:15 | 只看该作者
goodrenze 发表于 2014-7-11 11:49
您好!我用KL02-SC.zip中的KL02_LowPower_Demo的工程,由于没有官方开发板,自己的板子不带外部晶振。所 ...

楼主,不好意思回复迟了。
刚有些事,所以迟测了你的东西。
我按照你说的配置,修改了,然后,禁止了LPTMR的初始化,lptmr_init(5 * 1000, LPTMR_USE_LPOCLK);
发送7,功耗变为1.9uA,正好在DATASHEET范围内。
你把LPTMR去掉,因为一中断就唤醒了。

使用特权

评论回复
17
goodrenze|  楼主 | 2014-7-11 17:43 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-11 16:15
楼主,不好意思回复迟了。
刚有些事,所以迟测了你的东西。
我按照你说的配置,修改了,然后,禁止了LPTM ...

谢谢回复,我下周再试下。你是已经把系统时钟设置成内部时钟了(FEI模式)吗?并且IRC时钟设置成stop状态下是使能的吗(MCG_C1的IREFSTEN置一)?

使用特权

评论回复
18
FSL_TICS_ZJJ| | 2014-7-11 17:45 | 只看该作者
goodrenze 发表于 2014-7-11 17:43
谢谢回复,我下周再试下。你是已经把系统时钟设置成内部时钟了(FEI模式)吗?并且IRC时钟设置成stop状态下 ...

是的,FEI,IREFSTEN置位,一切正常。

使用特权

评论回复
19
FSL_TICS_ZJJ| | 2014-7-14 09:23 | 只看该作者
楼主,你这个问题解决了莫有?

使用特权

评论回复
20
goodrenze|  楼主 | 2014-7-20 15:06 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-14 09:23
楼主,你这个问题解决了莫有?

谢谢您的指导。后来发现是自己写的程序有点问题。程序中进入VLPS模式之前,通过串口发送了一串字符串,然后直接调用进入VLPS模式的函数。可能是进入VLPS模式后,之前的UART0的字符串还未发送完,触发了串口中断,又把单片机从VLPS模式给唤醒了。后来我在进入VLPS模式之前加了一段时间的延时,就可以正常进入VLPS模式了。
对于VLPS模式无法通过串口唤醒的问题,应该是UART0的时钟源没有设置对,因为使用PE配置的,之前对于UART0的时钟源的配置不是很清楚,可能设置有问题。后来找到设置方法了,就没有问题了,可以正常从VLPS模式通过URAT0的接收中断唤醒。
主要还是一些细节没弄明白引起的一些问题吧。不单要看RM,看例程代码,学PE配置,还要仔细看自己的代码。做技术真的很累人啊。这技术发展太快了,总是跟不上信息时代潮流。不知道ZJJ对做技术搞研发是如何看待的?

使用特权

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

本版积分规则

112

主题

163

帖子

1

粉丝