打印
[技术问题解答]

Kinetis低功耗模式的进入和唤醒

[复制链接]
5618|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxb18k|  楼主 | 2014-6-13 17:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
wxb18k|  楼主 | 2014-6-13 17:45 | 只看该作者
求助!

使用特权

评论回复
板凳
wxb18k|  楼主 | 2014-6-13 17:46 | 只看该作者
飞思大神救命啊

使用特权

评论回复
地板
FSL_TICS_Robin| | 2014-6-16 09:31 | 只看该作者

使用特权

评论回复
5
wxb18k|  楼主 | 2014-6-17 00:44 | 只看该作者
有没有uart2唤醒的啊?uart2没有UARTx_MA2和UARTx_MA1这两个寄存器啊

使用特权

评论回复
6
wxb18k|  楼主 | 2014-6-17 17:03 | 只看该作者
飞思哥,肿么办啊,我试了多种办法了,但是我的程序就是一睡不醒啊,求uart2的vlps唤醒!!!!!!!!!!!!!!

使用特权

评论回复
7
wxb18k|  楼主 | 2014-6-17 17:05 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-16 09:31
楼主你好
手把手系列之官方例程讲解大全-Kinetis系列 汇总帖中有一篇你提到的例程:手把手学会官方例程第 ...

有没有uart2唤醒的啊?uart2没有UARTx_MA2和UARTx_MA1这两个寄存器啊!!飞思哥,肿么办啊,我试了多种办法了,但是我的程序就是一睡不醒啊,求uart2的vlps唤醒!!!!!!!!!!!!!!

使用特权

评论回复
8
FSL_FAE_LiKe| | 2014-6-17 18:27 | 只看该作者
楼主您好,对于KL25芯片,UART1和UART2这两个模块的时钟源是BUS Clock,而在VLPS模式下这个clock是关掉的,所以这两个UART模块在VLPS下是disable的,不支持低功耗。如果一定要使用UART唤醒,只能使用UART0。如果一定要UART1或者UART2工作的话,只能使用STOP模式,并且还需要配置SMC_STOPCTRL寄存器的PSTOPO位,进入PSTOP1或者PSTOP2模式。

使用特权

评论回复
9
wxb18k|  楼主 | 2014-6-18 12:55 | 只看该作者
FSL_FAE_LiKe 发表于 2014-6-17 18:27
楼主您好,对于KL25芯片,UART1和UART2这两个模块的时钟源是BUS Clock,而在VLPS模式下这个clock是关掉的, ...

F:\器件手册\芯片用户手册\1.jpgF:\器件手册\芯片用户手册\2.jpg,可是在用户手册说可以唤醒的啊

使用特权

评论回复
10
wxb18k|  楼主 | 2014-6-18 12:58 | 只看该作者
FSL_FAE_LiKe 发表于 2014-6-17 18:27
楼主您好,对于KL25芯片,UART1和UART2这两个模块的时钟源是BUS Clock,而在VLPS模式下这个clock是关掉的, ...

这两张是在用户手册上的,这里是不是说可以通过uart2唤醒的啊?我怕我理解错误了

使用特权

评论回复
11
FSL_FAE_LiKe| | 2014-6-18 16:06 | 只看该作者
wxb18k 发表于 2014-6-18 12:58
这两张是在用户手册上的,这里是不是说可以通过uart2唤醒的啊?我怕我理解错误了
...

您提到的AWIC是异步唤醒,用的是异步时钟。如果要用这种方式唤醒的话,建议检查一下UART2_C1寄存器的WAKE位,还有UART2_C2的RWU位的设置,很可能是这里设置不对。

使用特权

评论回复
12
wxb18k|  楼主 | 2014-6-18 16:20 | 只看该作者
FSL_FAE_LiKe 发表于 2014-6-18 16:06
您提到的AWIC是异步唤醒,用的是异步时钟。如果要用这种方式唤醒的话,建议检查一下UART2_C1寄存器的WAKE ...

我在初始化中吧UART2_C2的RWU置一,把UART2_C1寄存器的WAKE位置0,但是还是不能唤醒

使用特权

评论回复
13
FSL_FAE_LiKe| | 2014-6-19 11:13 | 只看该作者
还需要使能中断,你再看看这个中断是不是使能了,UART_C2的RIE,还有RE位也要置1。再就是请检查一下你在RxD上发送的数据,整个帧是否完整,和你UART模块设置是否相匹配?

使用特权

评论回复
14
wxb18k|  楼主 | 2014-6-19 17:55 | 只看该作者
FSL_FAE_LiKe 发表于 2014-6-19 11:13
还需要使能中断,你再看看这个中断是不是使能了,UART_C2的RIE,还有RE位也要置1。再就是请检查一下你在RxD ...

我现在改为uart0了,用的是PLL时钟,当我运行进入vlps函数时,功耗降低了5mA,但是SMC_PMSTAT读出来是0x01,也就是还在RUN模式,同时主函数还有在运行,我的VLPS程序是

使用特权

评论回复
15
FSL_FAE_LiKe| | 2014-6-19 18:10 | 只看该作者
wxb18k 发表于 2014-6-19 17:55
我现在改为uart0了,用的是PLL时钟,当我运行进入vlps函数时,功耗降低了5mA,但是SMC_PMSTAT读出来是0x0 ...

这个问题其实是这样的,在VLPS下模式下,core是不运行的,这个时候core是处在static状态的,MCU是不执行指令的,相当于整个芯片是死掉的,只不过没掉电,维持着寄存器的值,所以是没法通过软件手段检查各个寄存器的状态的。
那为什么你能看到SMC_PMSTAT的值呢?因为这个时候已经还原到RUN模式下了,你在debug单步执行的时候,其实是没有真正进去VLPS的,所以SMC_PMSTAT的值是RUN。 如果要验证是否真的进入VLPS,需要直接去run整个代码,而不能debug单步走,同时串联一个电流表,测实际的电流,VLPS下大约4 uA左右,而RUN一般是几个mA。
还有你需要改一下MCG的设置,VLPS下PLL是disable的,只能bypass。

使用特权

评论回复
16
FSL_FAE_LiKe| | 2014-6-19 18:16 | 只看该作者
还有就是进入VLPS模式前,需要设置一下UART0的时钟源,参见SIM_SOPT2寄存器的UART0SRC位,同时注意改变时钟源后,波特率也要对应修改,否则程序会死在UART通信这里。

使用特权

评论回复
17
wxb18k|  楼主 | 2014-6-20 14:01 | 只看该作者
FSL_FAE_LiKe 发表于 2014-6-19 18:16
还有就是进入VLPS模式前,需要设置一下UART0的时钟源,参见SIM_SOPT2寄存器的UART0SRC位,同时注意改变时钟 ...

在vlps之前,我的uart0时钟源选择的是PLL,程序运行到vlps的时候电流也是下降了大概5mA,就是在vlps模式下依然可以使用uart0来接收和发送数据,同事main函数等的程序依然可以运行,就是慢了点(比如我的一个1S延时函数变成了4S左右),这是为什么呢?

使用特权

评论回复
18
wxb18k|  楼主 | 2014-6-20 14:04 | 只看该作者
FSL_FAE_LiKe 发表于 2014-6-19 18:16
还有就是进入VLPS模式前,需要设置一下UART0的时钟源,参见SIM_SOPT2寄存器的UART0SRC位,同时注意改变时钟 ...

我没有在debug里看寄存器状态,我是直接用UART0读出的,同时知道其MAIN函数还在运行是通过在while(1)中放一秒钟点灯的命令,所以才知道的

使用特权

评论回复
19
wxb18k|  楼主 | 2014-6-20 15:06 | 只看该作者
FSL_FAE_LiKe 发表于 2014-6-19 18:16
还有就是进入VLPS模式前,需要设置一下UART0的时钟源,参见SIM_SOPT2寄存器的UART0SRC位,同时注意改变时钟 ...

不好意思啊,uart0用的是FLL时钟源

使用特权

评论回复
20
FSL_TICS_Jeremy| | 2014-6-20 17:08 | 只看该作者
wxb18k 发表于 2014-6-20 14:01
在vlps之前,我的uart0时钟源选择的是PLL,程序运行到vlps的时候电流也是下降了大概5mA,就是在vlps模式 ...

进入VLPS模式,代码都不跑啊,这么还会进行接收和发送的操作呢,请问你的程序中,怎么设置UART0发送数据的?

使用特权

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

本版积分规则

20

主题

140

帖子

1

粉丝