CPU系统有两种典型的低功耗模式:一种是睡眠模式,另一种是空闲模式。它们都可以通过执行相应的指令而进入。对于睡眠模式,一般来说系统会停止系统时钟的运行及所有代码指令的运行,以及大多数外设模块的运行。而在空闲模式下,CPU会空闲下来停止运行,但允许外设模块以特定的时钟继续运行。
当系统进入这两种模式后,当发生一些特定事件后,系统将走出低功耗模式变为正常模式,常见的时间比如,中断发生,或者看门狗超时(此处可知MCU内部看门狗是可以使用LPRC低频时钟在睡眠模式下运行),亦或者外部复位或者内部复位事件发生等,这个现象就是唤醒事件。
这里有一个特殊情况需要注意,当中断和低功耗模式指令同时发生时,那么会首先进入低功耗模式,中断延后唤醒系统。
另外,在睡眠模式下,主振荡器POSC和辅助振荡器会disable,系统时钟FOSC会disable,那么对系统时钟监控的模块FSCM也不会运行。
当器件从睡眠模式唤醒时,CPU不会立即执行后面的指令,而是会有一定的delay,这个delsy通常在8个系统时钟以内。当唤醒后,系统时钟和外设时钟会重新使能,器件就重新启动 并以先前配置的当前时钟源去执行指令或工作,这时器件就进入了正常工作模式。
这里我们重点分析一下这个唤醒delay的时间组成,在MCU系统唤醒中,如果我们对系统使能了在睡眠模式下的供电电压模块待机模式,则从待机到active会有一个电压模块的从待机模式到active模式的delay。另外,时钟系统的delay也是重要的部分,对于不同的时钟源delay组成各有不同,主要分为振荡器启动delay,除了采用外部时钟产生器时不包含这类dealy之外,不管是内部振荡器FRC还是外部晶振源都需要考虑这部分delay,即TOSCD,当使用外部晶振时,必须要考虑外部负载电容及晶体特性造成的影响。
当使用外部晶振时,还有一个重要的时钟delay是启动定时器的delay,即TOST。若时钟系统涉及到使用了锁相环,还需要考虑时钟锁相需要的时间,即TLOCK。 |