7. 电源管理、睡眠及复位

7. 电源管理、睡眠及复位

7.1 外部电源输入

CH559芯片内部工作电压为3.3V,I/O引脚的输入输出电压为3.3V,除了P1.0~P1.7、XI、XO、 RST之外的I/O引脚都可以承受5V电压输入。CH559芯片内置5V到3.3V的低压差电压调整器,支持外部3.3V或者5V电源电压输入,两种电源电压输入模式参考下表。

外部电源电压VIN5引脚电压:外部电压3.3V~5VVDD33引脚电压:内部电压3.3V
3.3V包括小于3.6V输入外部3.3V电压到电压调整器,必须对地接不小于0.1uF退耦电容输入外部3.3V作为内部工作电源,必须对地接不小于0.1uF退耦电容
5V包括大于3.6V输入外部5V电压到电压调整器,必须对地接不小于0.1uF退耦电容内部电压调整器3.3V输出及3.3V内部工作电源输入,必须对地接不小于3.3uF退耦电容

在电源上电或者系统复位后,CH559默认处于运行状态。当某些功能模块不需要使用时,可以关闭这些模块的时钟,以降低功耗。当CH559完全不需要运行时,可以设置PCON中的PD进入睡眠状态,睡眠状态下可以选择通过USB、UART0、UART1、SPI0以及部分GPIO进行外部唤醒。

7.2 电源和睡眠控制寄存器

表7.2.1 电源和睡眠控制寄存器列表

名称地址描述复位值
WDOG_COUNTFFh看门狗计数寄存器00h
RESET_KEEPFEh复位保持寄存器00h
WAKE_CTRLEBh睡眠唤醒控制寄存器00h
SLEEP_CTRLEAh睡眠控制寄存器00h
PCON87h电源控制寄存器10h

看门狗计数寄存器(WDOG_COUNT):

名称访问描述复位值
[7:0]WDOG_COUNTRW看门狗当前计数,计满0FFh转向00h时溢出,溢出时自动设置中断标志bWDOG_IF_TO为100h

复位保持寄存器(RESET_KEEP):

名称访问描述复位值
[7:0]RESET_KEEPRW复位保持寄存器,数值可以被人为修改,除了上电复位可将其清零之外,其它任何复位都不影响该数值00h

睡眠唤醒控制寄存器(WAKE_CTRL),仅在安全模式下可写:

名称访问描述复位值
7bWAK_BY_USBRWUSB事件唤醒使能,该位为0禁止唤醒0
6bWAK_RXD1_LORWUART1接收输入低电平唤醒使能,该位为0禁止唤醒。iRS485模式下选择XA/XB差分输入,非iRS485模式下根据bIER_PIN_MOD1=1/0选择RXD1或RXD1_引脚0
5bWAK_P1_5_LORWP1.5低电平唤醒使能,为0禁止唤醒0
4bWAK_P1_4_LORWP1.4低电平唤醒使能,为0禁止唤醒0
3bWAK_P0_3_LORWP0.3低电平唤醒使能,为0禁止唤醒0
2bWAK_CAP3_LORWTimer3捕捉输入低电平唤醒使能,为0禁止唤醒。根据bTMR3_PIN_X=0/1选择CAP3或CAP3_引脚0
1bWAK_P3_2E_3LRWP3.2边沿变化和P3.3低电平唤醒使能,为0禁止唤醒0
0bWAK_RXD0_LORWUART0接收输入低电平唤醒使能,为0禁止唤醒。根据bUART0_PIN_X=0/1选择RXD0或RXD0_引脚0

睡眠控制寄存器(SLEEP_CTRL),仅在安全模式下可写:

名称访问描述复位值
7bSLP_OFF_USBRWUSB时钟关闭控制,该位为1关闭时钟0
6bSLP_OFF_ADCRWADC时钟关闭控制,该位为1关闭时钟0
5bSLP_OFF_UART1RWUAR1时钟关闭控制,该位为1关闭时钟0
4bSLP_OFF_P1S1RWPWM1和SPI1时钟关闭控制,该位为1关闭时钟0
3bSLP_OFF_SPI0RWSPI0时钟关闭控制,该位为1关闭时钟0
2bSLP_OFF_TMR3RWTimer3时钟关闭控制,该位为1关闭时钟0
1bSLP_OFF_LEDRWLED-CTRL时钟关闭控制,该位为1关闭时钟0
0bSLP_OFF_XRAMRWxRAM时钟关闭控制,该位为1关闭时钟0

电源控制寄存器(PCON):

名称访问描述复位值
7SMODRW当用定时器1产生UART0波特率时,选择UART0模式1、2、3的通讯波特率:0-慢速模式;1-快速模式0
6保留RO保留0
5bRST_FLAG1R0芯片最近一次复位标志高位0
4bRST_FLAG0R0芯片最近一次复位标志低位1
3GF1RW通用标志位1:使用者可自己定义,可软件清零或置位0
2GF0RW通用标志位0:使用者可自己定义,可软件清零或置位0
1PDRW睡眠模式使能,置1后睡眠,唤醒后硬件自动清零0
0保留R0保留0

表7.2.2 芯片最近一次复位标志描述

bRST_FLAG1bRST_FLAG0复位标志描述
00软件复位,来源:bSW_RESET=1并且(bBOOT_LOAD=0或bWDOG_EN=1)
01电源上电复位,来源:VDD33引脚电压低于检测电平
10看门狗复位,来源:bWDOG_EN=1并且看门狗超时溢出
11外部引脚手工复位,来源:En_P5.7_RESET=1并且P5.7输入高电平

7.3 复位控制

CH559有4个复位源:上电复位、外部复位、软件复位、看门狗复位,后三者属于热复位。

7.3.1 上电复位

上电复位POR由片内电压检测电路产生。POR电路持续监控VDD33引脚的电源电压,低于检测电平Vpot时产生上电复位,并由硬件自动延时Tpor以保持复位状态,延时结束后CH559运行。

只有上电复位才使CH559重新加载配置信息以及清零RESET_KEEP,其它热复位不影响。

7.3.2 外部复位

外部复位由外加于RST引脚的高电平产生。当配置信息En_P5.7_RESET为1,并且RST引脚上的高电平持续时间大于Trst时触发复位过程。当外加高电平信号撤消后,硬件自动延时Trdl以保持复位状态,延时结束后CH559从0地址开始执行。

7.3.3 软件复位

CH559支持内部软件复位,以便不需要外部干预即可主动复位CPU状态并重新运行。设置全局配置寄存器GLOBAL_CFG中的bSW_RESET为1,即可软件复位,并且自动延时Trdl以保持复位状态,延时结束后CH559从0地址开始执行,bSW_RESET位由硬件自动清零。

当bSW_RESET置1时,如果bBOOT_LOAD=0或者bWDOG_EN=1,那么复位后bRST_FLAG1/0将指示为软件复位;当bSW_RESET置1时,如果bBOOT_LOAD=1并且bWDOG_EN=0,那么bRST_FLAG1/0将不产生新的复位标志,而是保持前一次的复位标志不变。

对于有ISP引导程序的芯片,电源上电复位后,先运行引导程序,该程序根据需要软件复位芯片以切换到应用程序状态,此次软件复位只导致bBOOT_LOAD清零,不影响bRST_FLAG1/0的状态(由于复位前bBOOT_LOAD=1),所以当切换到应用程序状态时,bRST_FLAG1/0仍指示为上电复位状态。

7.3.4 看门狗复位

看门狗复位由看门狗定时器超时溢出时产生。看门狗定时器是8位计数器,其计数的时钟频率为系统主频Fsys/262144,当计满0FFh转向00h时产生溢出信号。

看门狗定时器溢出信号将触发中断标志bWDOG_IF_TO为1,该中断标志在重新加载WDOG_COUNT时或者进入相应的中断服务程序时被自动清零。

通过向WDOG_COUNT写入不同的计数初始值,从而实现不同的定时周期Twdc。在12MHz主频下,写入00h时的看门狗定时周期Twdc约为5.9秒,写入80h时约为2.8秒。

如果看门狗定时器溢出时bWDOG_EN=1,那么产生看门狗复位,并且自动延时Trdl以保持复位状态,延时结束后CH559从0地址开始执行。

当bWDOG_EN=1时为了避免被看门狗复位,必须及时重置WDOG_COUNT,避免其溢出。