系统开机原理 当按下开机按钮S1时,S与高电平接通,S=1。查阅真值表可得,当R=1,S=1时,输出Q应稳定输出1,经过三极管反向后,电源控制引脚SHDN为低电平,打开系统电源。通常MPU进行初始化时会将I/O引脚置为高电平,由于RC网络的延迟作用,S1按下后可以保证S端约有120ms处于高电平(保证开机稳定条件:RC网络的延迟时间>系统上电复位并将POWER_CTL状态稳定为1的时间)。经过三极管Q3反向,此时S=1,R=0,Q端输出1,系统电源处于打开状态。
MPU延迟后读取STATE引脚的状态。如果此时STATE为低电平,则确认Q1导通,S1曾按下,确认用户开机程序正常运行。如果此时STATE为高电平,则表明Q1截止,开机信号为误动作,程序执行关机程序。
当RC网络的延迟时间过后,S端由1转为0,此时S=0,R=0,查阅真值表得出此时输出Q应该维持前一输出状态,即保持系统开通电源状态。
系统关机原理 作为节电产品,如果在规定时间内系统没有工作,系统会自动转入关机程序,在保存重要数据后,自动关闭系统。
当用户手动关机,按下S1时,Q1打开,STATE的状态由高电平转变为低电平,MPU检测到STATE的状态变化后,经过延时再次检测STATE状态,如仍为低电平,则确认为关机指令,程序将保存重要数据,关闭所有中断,然后将I/O引脚POWER_CTL置为低电平,程序进入循环等待关机状态。此时,I/O口状态经过Q3反相后使触发器R=1,S=0,查阅真值表可得Q端应该稳定输出0,经过三极管Q2反向驱动后,电源控制引脚SHDN为高电平,关闭系统电源。
电源芯片关闭后,随着电容放电,MPU的供电电压不断下降,引脚POWER_CTL变为不定状态,但查阅真值表,无论此时R端电位高或低,输出Q都为低电平,稳定的使系统处于关机状态。
随着电容继续放电,I/O引脚POWER_CTL稳定为低电平,此时触发器引脚R=1,S=0,稳定维持输出Q为低电平,保证系统电源的稳定关断。
设计的改进 实际使用中发现,当更换供电电源时,触发器初始上电,D、CLK和R端下拉至地,保持稳定状态为0。而由于电容C1的充电作用,有可能使S=1,查阅真值表,当S=1,R=1时,输出Q为高电平,致使Q2导通,SHDN为高电平,打开系统。
为了解决更换电源时系统有可能自动开机问题,在系统上电程序开始执行并延迟500ms后重新读取STATE状态。初始阶段,Q1导通,STATE状态为低电平。而随着RC网络的延迟时间过后,S端电位由高电平变为低电平,Q1由导通变为截止,STATE状态由低电平重新转换为高电平。MPU延时后读取的STATE如果为高电平,则认为是误开机,程序执行关机程序,重新关闭系统电源。如果STATE仍为低电平,则确认是开机指令,程序正常执行。因此要求用户在开机时,按下S1并保持500ms以上。
MPU开机初始化程序流程如图2所示。