一个Debug模式和正常工作模式下进入低功耗模式的问题

Document created by Const Yu Employee on Jun 24, 2013Last modified by Const Yu Employee on Oct 12, 2013
Version 3Show Document
  • View in full screen mode

EEfocus上有一个关于Debug模式和正常工作模式下进入低功耗模式的问题总结了一下,Post过来Share给大家。

 

问题现象:使用串口接收中断,主函数进入睡眠。在调试过程中发现:只有在连接jlink调试下,串口可以正常收发数据,串口收到数据可以唤醒mcu。但在断开jlink情况下,不能正常收发数据。

所做尝试:尝试过不在VLPS模式下,串口是可以正常中断接收数据的,也可以正常发送数据。另外,在使用过程中采用的是内部晶振,串口的时钟源是FLL

主函数代码:

while(1)

{

enter_vlps();  //进入vlps模式

out_char(c); //串口接收中断函数把字符赋给c

}

 

解答:

首先,在VLPS模式下,FLL不能工作,也就无法输出clock时钟到UART,所以进入VLPS模式后UART不可以用FLL做时钟。

其次,在连J-Link调试时其实没有进入VLPS模式,而是进入了STOP模式,此时FLL是有输出的。在数据手册上的MDM-AP Status Register部分关于LP有讲到:Usage intended for debug operation in which Run to VLPS is attempted. Per debug definition, the system actually enters the Stop state.

所以造成了连接J-link从表面上看起来是进入了VLPS模式(其实是进入Stop模式),不连接J-link就无法正常工作了。

Attachments

    Outcomes