-
一、模式简介
-
1、运行模式
一共11种模式,分别为RESET、DRUN、SAFE、TEST、RUN0、RUN1、RUN2、RUN3、HALT、STOP、STANDBY。其中RESET、DRUN、SAFE、TEST是系统工作模式,用户不用个特别关系,而后面几种是用于经常使用到的工作模式。
RESET:系统复位时的工作,运用等待系统的电源、时钟、频率等准备好。
DRUN:进入用户模式的唯一入口,用于配置各种用户模式。
SAFE:一种特殊的芯片模式,当系统出现可复位故障时会进入这种模式。
TEST:用于芯片自检,比如flash和校验等。
RUN0~RUN3:软件最常用的工作模式。
HALT:低功耗模式,一部分电源停止工作,且可配置部分功能模块是否休眠,比如flash、pll、主电源模块等等,可被唤醒。唤醒时间最短。
STOP:一种低功耗模式,相对HALT可休眠的功能模块更多,功耗更低,唤醒时间更长。运行功耗大概是几百个uA。
STANDBY:一种低功耗模式,相对于STOP可休眠的功能模块更多,几乎所有非必要的模块全部都休眠,运行功耗更低,且唤醒时间更长。运行功耗大概是几十个uA。
2、模式转换
模式转换图如下,转换时应注意到STANDBY唤醒后只能进入DRUN模式,而HALT和STOP唤醒后进入RUN模式。
模式转换的方法是向下面的寄存器写入特定的数据,TARGET_MODE表示希望转入的运行模式,而KEY是模式转换需要写入的密钥。
模式转换密钥写入完成后,需要检查ME_GS寄存器的S_MTRANS位来确认转换过程时候结束,或者S_CURRENT_MODE位来确认现在的工作模式。
3、模式运行资源差异
模式寄存器如下,只是不同的模式其可配置的位不同。
PDO:对于IO的控制。=0是常规模式。=1是特殊设定模式,在SAFE和TEST模式默认高阻态;在STOP模式保持进入STOP模式前的电平不变,且关闭drive,且电平不能变化;在STANDBY模式,电平为低且不能变化。wakeup使能的引脚除外。
MVRON:主电压调节器的控制,主要是电源域章节的2、3电源域。
DFLASH/CFLASH:分为normal模式、low-power模式和power-down模式,主要差别是供电功率和唤醒时间。
FMPLLON:PLL的开关。
FXOSCON:外部高速晶振的开关。
FIRCON:内部高速晶振的开关。
SYSCLK:系统时钟的选择,其可以选择内部高速时钟、颞部高速时钟的分频信号、外部高速时钟、外部高速时钟的分频信号、PLL和禁用。
不同的工作模式下,这些资源的对比如下图,其中“√”表示模式可配置。
-
二、模式转换保护机制
模式转换有一些规则需要遵守,否则转换会被忽略或进入无效配置模式中断,总结如下:
- 如果系统时钟选择为FIRC或FIRC的分频,那FIRCON必须使能。
- 如果系统时钟选择为FXOSC或其分频,那FXOSCON必须使能。
注意:没有对PLL的检测,如果系统系统时钟选择PLL,那PLL时钟输入(FXOSC)必须开启。
- 如果系统时钟选择PLL,那PLLON必须使能。
- CFLAON和DFLAON不能配置00模式,00模式是保留的。
- 如果使能了FMPLL、CFLASH和DFLASH,MVRGE必须使能,寄MVRON。
- 系统时钟的配置不能选择保留位。
- 仅有STOP和TEST模式的系统时钟可以选择disable。
注意:如果在TEST模式下系统时钟选择disable,那只能通过系统复位才可以退出。
-
三、模式转换中断
-
1、无效的配置模式
当配置违反了保护机制,I_ICONF会置位,如果使能了对应的中断,那就会进入中断模式。
2、 无效模式转换
- 如果运行在SAFE或者从MC_RGM模式中将进入SAFE模式,除了RESET和SAFE模式外的其他模式请求,都是无效的。
- 请求转换的模式不存在。
- 请求转换的模式在ME_ME寄存器中是被禁用的,或者S_DMA位置1后,模式转换也是无效的。
- 请求模式与当前模式不能直接转换,比如从STOP进入DRUN模式。
- 模式转换过程中申请了新的模式转换。
注意:无效模式转换的原因可能是重叠的,其发生的优先级从高到低为S_SEA,S_NMA,S_DMA,S_MRI,S_MTI。
一些特殊情况,不被视为无效模式转换,如下
- 无论模式转换进行到什么阶段时,请求进入RESET或SAFE。
- 中断退出HALT和STOP模式。
- 模式转换失效后退回原来的模式。
- 无论何时,请求转换先正在运行的模式不被视为无效。如果从低功耗不能进入RUN模式,那系统会进入到SAFE或者RESET模式。
3、其他中断
SAFE模式中断:当硬件失效进入时,标志位会置位。
模式转换完成中断:用于只是模式转换完成。
-
四、外设时钟的开启
外设时钟是否开启由PCTL寄存器决定,每一个外设都对应PCTL的一个寄存器。PCTL可以选择对应外设时钟在哪个PC模式下开启,而PC模式又定义用户工作模式。
外设时钟只有在选择的PC中使能的工作模式下可以开启。