[技术问题解答] kl02在VLPS模式下无法被UART唤醒

[复制链接]
1912|11
 楼主| cherylJI 发表于 2015-11-27 20:05 | 显示全部楼层 |阅读模式
我用KL02的板子,初始化进入VLPR模式,然后进入VLPS睡眠,在睡眠中无法通过UART唤醒
 楼主| cherylJI 发表于 2015-11-27 20:58 | 显示全部楼层
时钟配置是这样:BLPI mode  , MCGIRCLK enable in stop
初始化VLPR模式后寄存器:PMPROT:0x20,PMCTRL:0x48,STOPCTRL:0x00,PMSTAT:0x04
有一点STOPA总是被只为1很奇怪。

进入VLPS的代码如下:
  1.   SMC_STOPCTRL = (SMC_STOPCTRL_PSTOPO(0x00) | SMC_STOPCTRL_VLLSM(0x00));
  2.       /* Set the STOPM field to 0b010 for VLPS mode */
  3.       SMC_PMCTRL &= ~SMC_PMCTRL_STOPM_MASK;
  4.       SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x2);
  5.       dummyread = SMC_PMCTRL;

  6.       SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;
  7.       __asm("WFI");


进入后UART向MCU发消息无法唤醒,RESET之后才会收到UART的消息。
春风的暖暖 发表于 2015-11-27 22:01 | 显示全部楼层
波特率是不是设置的太高了啊
史迪威将军 发表于 2015-11-28 09:14 | 显示全部楼层
cherylJI 发表于 2015-11-27 20:58
时钟配置是这样:BLPI mode  , MCGIRCLK enable in stop
初始化VLPR模式后寄存器:PMPROT:0x20,PMCTRL:0x4 ...

单步调试试试呢,看看有没有中断产生
侣行天下 发表于 2015-11-28 20:25 | 显示全部楼层
建议楼主单步调试看看程序跑到什么位置了
FSL_TICS_ZJJ 发表于 2015-11-30 10:31 | 显示全部楼层
你的UART0是使用中断形式吗?
只有UART0中断才能唤醒,另外注意下你选择的UART0时钟源,在VLPS下是否还能工作?
 楼主| cherylJI 发表于 2015-11-30 16:25 | 显示全部楼层
春风的暖暖 发表于 2015-11-27 22:01
波特率是不是设置的太高了啊

不高,38400,在我断电重启或者reset之后立刻会受到之前的UART0中断,但是就是没办法在sleep当中唤醒它接收,这样也与波特率有关吗?
 楼主| cherylJI 发表于 2015-11-30 16:27 | 显示全部楼层
史迪威将军 发表于 2015-11-28 09:14
单步调试试试呢,看看有没有中断产生

进入sleep之后就无法看到任何动作了,但是手动reset之后会立刻收到刚刚的中断,也就是在sleep时没有将mcu唤醒才没收到UART的消息
 楼主| cherylJI 发表于 2015-11-30 16:28 | 显示全部楼层
侣行天下 发表于 2015-11-28 20:25
建议楼主单步调试看看程序跑到什么位置了

sleep下去了,就停在我贴的进入VLPS的那段代码里面
 楼主| cherylJI 发表于 2015-11-30 17:29 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-11-30 10:31
你的UART0是使用中断形式吗?
只有UART0中断才能唤醒,另外注意下你选择的UART0时钟源,在VLPS下是否还能工 ...

我用的是UART0中断,UART时钟源是IRC,在VLPS下没有任何动作,可以被外部中断和timer唤醒。
一些配置如下:

使用下面的configration0



一些寄存器,有疑问的是STOPA寄存器,总是被置1,断电后重启初始被置0,再后来都是1。


这个是UART0的时钟源寄存器

史迪威将军 发表于 2015-11-30 18:20 | 显示全部楼层
cherylJI 发表于 2015-11-30 17:29
我用的是UART0中断,UART时钟源是IRC,在VLPS下没有任何动作,可以被外部中断和timer唤醒。
一些配置如下 ...

到这里我也无能为力了,不过帮顶吧
FSL_TICS_ZJJ 发表于 2015-12-1 13:45 | 显示全部楼层
cherylJI 发表于 2015-11-30 17:29
我用的是UART0中断,UART时钟源是IRC,在VLPS下没有任何动作,可以被外部中断和timer唤醒。
一些配置如下 ...

你好!
这边有个类似的帖子,你可以看看:https://community.freescale.com/message/379316#379316
如果STOPA总是置1, 说明stop功耗模式进入过程中,已经有interrupt产生,导致进入stop模式失败。
你看看你的功耗是不是stop模式的功耗,还是没有进去,就被uart idle给唤醒了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

17

帖子

0

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