打印
[技术问题解答]

kl02在VLPS模式下无法被UART唤醒

[复制链接]
1489|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cherylJI|  楼主 | 2015-11-27 20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
cherylJI|  楼主 | 2015-11-27 20:58 | 只看该作者
时钟配置是这样:BLPI mode  , MCGIRCLK enable in stop
初始化VLPR模式后寄存器:PMPROT:0x20,PMCTRL:0x48,STOPCTRL:0x00,PMSTAT:0x04
有一点STOPA总是被只为1很奇怪。

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

      SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;
      __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 ...

单步调试试试呢,看看有没有中断产生

使用特权

评论回复
5
侣行天下| | 2015-11-28 20:25 | 只看该作者
建议楼主单步调试看看程序跑到什么位置了

使用特权

评论回复
6
FSL_TICS_ZJJ| | 2015-11-30 10:31 | 只看该作者
你的UART0是使用中断形式吗?
只有UART0中断才能唤醒,另外注意下你选择的UART0时钟源,在VLPS下是否还能工作?

使用特权

评论回复
7
cherylJI|  楼主 | 2015-11-30 16:25 | 只看该作者
春风的暖暖 发表于 2015-11-27 22:01
波特率是不是设置的太高了啊

不高,38400,在我断电重启或者reset之后立刻会受到之前的UART0中断,但是就是没办法在sleep当中唤醒它接收,这样也与波特率有关吗?

使用特权

评论回复
8
cherylJI|  楼主 | 2015-11-30 16:27 | 只看该作者
史迪威将军 发表于 2015-11-28 09:14
单步调试试试呢,看看有没有中断产生

进入sleep之后就无法看到任何动作了,但是手动reset之后会立刻收到刚刚的中断,也就是在sleep时没有将mcu唤醒才没收到UART的消息

使用特权

评论回复
9
cherylJI|  楼主 | 2015-11-30 16:28 | 只看该作者
侣行天下 发表于 2015-11-28 20:25
建议楼主单步调试看看程序跑到什么位置了

sleep下去了,就停在我贴的进入VLPS的那段代码里面

使用特权

评论回复
10
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的时钟源寄存器

使用特权

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

到这里我也无能为力了,不过帮顶吧

使用特权

评论回复
12
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

粉丝