ARM9S3C2440时钟与电源管理.docx
《ARM9S3C2440时钟与电源管理.docx》由会员分享,可在线阅读,更多相关《ARM9S3C2440时钟与电源管理.docx(9页珍藏版)》请在冰豆网上搜索。
ARM9S3C2440时钟与电源管理
ARM9S3C2440时钟与电源管理
电源模式:
正常,慢速,空闲和掉电模式:
-正常模式(NORMALMODE):
正常运行模式-慢速模式(SLOW
MODE):
不加PLL的低时钟频率模式-空闲模式(IDLEMODE):
只停止CPU的时钟-掉电模式(Power_OFFMODE):
所有外设和内核的电源都切断了电源工作原理1.系统工作状态几乎所有的ARM处理器设计都有空闲模式。
在空闲模式状态下,处理器的时钟停止,以减少处理器在空闲状态下的功耗。
当嵌入式操作系统发现处理器当前没有可执行的任务时,便将处理器置于空闲状态。
当系统发生中断时,处理器从空闲状态被唤醒。
大多数系统都有操作系统计时器中断,因此,处理器在一秒钟之内可能几千次的进出空闲状态。
值得注意的是,处理器空闲模式仅影响处理器本身,对系统的其他硬件不产生任何影响。
系统的各状态切换如图所示。
图1显示了基本的电源管理和工作状态。
图1系统的状态切换
2.系统挂起模式
在系统挂起模式(也称睡眠模式)下,只有以下部件继续工作:
SDRAM、处理器功耗管理电路、唤醒电路。
因为SDRAM里面的内容受到保护,系统的运行状态可以存入SDRAM里保存。
以下是进入睡眠模式的典型步骤。
(1)用户指定、超时、低电量状态等因素启动了挂起模式。
(2)操作系统调用驱动程序把外设调整到节电状态。
(3)处理器未保存的寄存器存入SDRAM。
(4)SDRAM进入自刷新模式。
(5)处理器进入挂起模式。
在该模式下,处理器的时钟停止,系统中各供电模块关闭。
重新恢复的次序与挂起次序相反,由处理器的唤醒信号或处理器内部唤醒信号源(如实时计时警报)启动。
系统执行挂起模式是个庞大的任务,必须了解如何将系统中所有的外设切换到节电状态。
3.系统关闭状态
对ARM系统来说,挂起状态虽然已大大减小了功耗,但系统在挂起状态下也消耗能量,因而需要一种关闭模式,像系统没有电源一样。
这种模式在电池耗尽时可以有效地保护电池不被损坏;同时可使系统在安装有电池的情况下进行传输和储存。
4.软启动大多数系统需要一种软启动功能,软启动时,处理器被复位,但是SDRAM里面的内容仍旧保持。
目前,大部分便
携式系统都选择在SDRAM中存储用户文件,这是一项非常有用的功能
以下翻译自S3C2440A手册:
POWERMANAGEMENT
ThePowerManagementblockcontrolsthesystemclocksbysoftwarefor
thereductionofpowerconsumptionintheS3C2440A.Theseschemesarerelatedto
PLL,clockcontrollogics(FCLK,HCLK,andPCLK)andwakeupsignals.Figure7-7
showstheclockdistributionoftheS3C2440A.
TheS3C2440Ahasfourpowermodes.Thefollowingsectiondescribeseachpowermanagementmode.Thetransitionbetweenthemodesisnotallowedfreely.
PleaseseeFigure7-8foravailabletransitionsamongthemodes.
电源管理
在S3C2440A中,电源管理模块通过用软件管理的方式控制系统时钟达到减少电源的消耗的目标。
这些调度和PLL,时钟控制逻辑(FCLK,HCLK和PCLK)和唤醒信号相关。
图
7-7显示了S3C2440A的时序分布图。
S3C2440A有4种电源模式。
下面介绍每种电源模式。
各个模式之间是不允许自由的转换。
这些模式中可以进行如图7-8所示的模式转换。
NORMALMode
InNormalmode,allperipheralsandthebasicblocks
includingpower
managementblock,theCPUcore,thebuscontroller,thememorycontroller,the
interruptcontroller,DMA,andtheexternalmastermay
operatecompletely.But,
theclocktoeachperipheral,exceptthebasicblocks,can
bestopped
selectivelybysoftwaretoreducethepowerconsumption.
IDLEMode
InIDLEmode,theclocktotheCPUcoreisstoppedexcept
thebus
controller,thememorycontroller,theinterruptcontroller,
andthepower
managementblock.ToexittheIDLEmode,EINT[23:
0],orRTCalarminterrupt,or
theotherinterruptsshouldbeactivated.(EINTisnotavailableuntilGPIOblockisturnedon).
在正常模式下,所有的外围设备和基本的模块包括电源管理模块,CPU内核,总线控制器,内存控制器,中断控制器,DMA,和外部控制器等。
但是,除了基本必需的模块,对于每个外围设备可以通过软件管理的方式进行有选择的停止时钟用以减少电量的消耗。
空闲模式:
在空闲模式下,时钟对于CPU内核来说是停止的,但是对于总线控制器,内存控制器,中断控制器和电源管理模块来说,时钟是仍然处于工作状态。
当外部中断EINT[23:
0],RTC告警中断或者其他中断被激活的时候,系统会退出空闲模式。
需要注意的是,外部中断EINT在GPIO模块被打开之前是不能被使用的。
SLOWMode(Non-PLLMode)
PowerconsumptioncanbereducedintheSLOWmodebyapplyingaslow
clockandexcludingthepowerconsumptionfromthePLL.TheFCLKisthe
frequencyofdivide_by_noftheinputclock(XTIpllorEXTCLK)withoutPLL.The
dividerratioisdeterminedbySLOW_VALintheCLKSLOWcontrolregisterand
CLKDIVNcontrolregister.
InSLOWmode,PLLwillbeturnedofftoreducethePLLpower
consumption.WhenthePLListurnedoffintheSLOWmodeandtheuserchanges
powermodefromSLOWmodetoNORMALmode,thenthePLLneedsclockstabilization
time(PLLlocktime).ThisPLLstabilizationtimeisautomaticallyinsertedby
theinternallogicwithlocktimecountregister.ThePLLstabilitytimewill
take300usafterthePLListurnedon.DuringPLLlocktime,theFCLKbecomes
SLOWclock.
UserscanchangethefrequencybyenablingSLOWmodebitinCLKSLOWregisterinPLLonstate.TheSLOWclockisgeneratedduringtheSLOWmode.
Figure7-11(Pleasecheckthefigurecorrectly)showsthetiming
diagram.
慢速模式(非锁相环模式)在慢速模式下,电源的消耗可以通过应用一个慢速时钟,同时在PLL中排除电源的消耗。
FCLK在没有PLL的状态下是输入时钟信号(XTIpll或者EXTCLK)的n分频,分频率是由CLKSLOW和CLKDIVN控制寄存器中的SLOW_VAL值来决定的。
在慢速模式下,为了减少PLL的电源消耗PLL将会被关闭。
当PLL在慢速模式下被关闭,用户可以改变电源工作模式从慢速模式到正常模式,此时,PLL需要时钟稳定时间(PLL锁定时间)。
这个PLL稳定时间被内部逻辑用锁定时间统计寄存器自动地插入。
在PLL锁定时间和FCLK变成慢速时钟的这段时间内,PLL稳定的时间在PLL打开后大约消耗300us。
在锁相环状态,用户可以改变频率通过使能CLKSLOW寄存器中的SLOWmode位。
慢速时钟是在慢速模式下产生的。
SLEEPMode
Theblockdisconnectstheinternalpower.So,thereoccursnopower
consumptionduetoCPUandtheinternallogicexceptthewake-uplogicinthis
mode.ActivatingtheSLEEPmoderequirestwoindependentpowersources.Oneofthetwopowersourcessuppliesthepowerforthewake-uplogic.Theotherone
suppliesotherinternallogicsincludingCPU,andshouldbecontrolledforpower
on/off.IntheSLEEPmode,thesecondpowersupplysourcefortheCPUand
internallogicswillbeturnedoff.ThewakeupfromSLEEPmodecanbeissuedby
theEINT[15:
0]orbyRTCalarminterrupt.
FollowtheProceduretoEnterSLEEPmode
1.SettheGPIOconfigurationadequateforSLEEPmode.
2.MaskallinterruptsintheINTMSKregister.
3.Configurethewake-upsourcesproperlyincludingRTCalarm.(Thebit
ofEINTMASKcorrespondingtothewake-upsourcehasnottobemaskedinorderto
letthecorrespondingbitofSRCPNDorEINTPENDset.
Althoughawake-upsource
isissuedandthecorrespondingbitofEINTMASKismasked,thewake-upwill
occurandthecorrespondingbitofSRCPNDorEINTPENDwillnotbe
set.)
4.SetUSBpadsassuspendmode.(MISCCR[13:
12]=11b)
5.SavesomemeaningvaluesintoGSTATUS[4:
3]register.Theseregister
arepreservedduringSLEEPmode.
6.ConfigureMISCCR[1:
0]forthepull-upresistersonthedatabus,
D[31:
0].IfthereisanexternalBUSholder,suchas74LVCH162245,turnoffthe
pull-upresistors.Ifnot,turnonthepull-upresistors.Additionally,The
Memoryconcerningpinsissettotwotypes,oneisHi-z,andtheotheris
Inactivestate.
7.StopLCDbyclearingLCDCON1.ENVIDbit.
8.ReadrREFRESHandrCLKCONregistersinordertofillthe
TLB.
9.LetSDRAMentertheself-refreshmodebysettingthe
REFRESH[22]=1b.
10.WaituntilSDRAMself-refreshiseffective.
11.SetMISCCR[19:
17]=111btomakeSDRAM
signals(SCLK0,SCLK1andSCKE)
protectedduringSLEEPmode
12.SettheSLEEPmodebitintheCLKCONregister.
睡眠模式电源模块断开内部电源,因此,在这种模式下,由于CPU和内部模式逻辑,此时是没有电源消耗的。
激活休眠模式需要两个独立的电源供应源。
其中一个电源供应源为唤醒逻辑提供电源,另一个电源供应源提供了其他的内部逻辑包括
CPU,并且为了电源的开/关是可以被控制的。
在睡眠模式下,为CPU和内部逻辑提供电源的第二个电源供应源将会被关闭。
通过外部中断[15:
0]或者RTC告警中断可以将系统从睡眠模式中唤醒。
图7-9描述了进入睡眠模式的过程。
1.设置GPIO寄存器为休眠模式
2.在内部中断源屏蔽寄存器中屏蔽所有的内部中断
3.适当地配置唤醒源,使其包括RTC告警
4.设置USB为挂起模式
5.将当前一些需要保留的值存储在寄存器
GSTATUS[4:
3]中,这些寄存器在睡眠模式下将被保留
6.在数据总线上将寄存器MISCCR[1:
0]配置为上拉电阻
7.清LCD控制寄存器1
LCDCON1的ENVID位来停止LCD的工作
8.读取rREFRESH和rCLKCON寄存器中的值来填
充页表缓存
9.通过设置REFRESH[22]为1bit,让SDRAM进入自刷新模式
10.等待,直到SDRAM自刷新模式开始运转
11.设置MISCCR[19:
17]为111bit,使得SDRAM的信号(SCLK0,SCLK1andSCKE)在睡眠模式下得到保护
12.设置CLKCON寄存器的睡眠模式比特位
FollowtheProceduretoWake-upfromSLEEPmode
1.Theinternalresetsignalwillbeassertedifoneofthe
'sexactlyeswaimththecaseofthe
wake-up
sourcesisissued.ItassertionoftheexternalnRESETpin.Thisresetdurationisdeterminedbytheinternal16-bitcounterlogicandtheresetassertiontimeiscalculatedastRST=(65535/
XTAL_frequency).
2.CheckGSTATUS2[2]inordertoknowwhetherornotthepower-upis
causedbythewake-upfromSLEEPmode.
3.ReleasetheSDRAMsignalprotectionbysettingMISCCR[19:
17]=000b.
4.ConfiguretheSDRAMmemorycontroller.
5.WaituntiltheSDRAMself-refreshisreleased.Mostly
SDRAMneeds
therefreshcycleofallSDRAMrow.
6.TheinformationinGSTATUS[3:
4]canbeusedforuser's
ownpurpose
becausethevalueinGSTATUS[3:
4]hasbeenpreservedduringSLEEP
mode.
7.-ForEINT[3:
0],checktheSRCPNDregister.
-ForEINT[15:
4],checkthe
EINTPENDinsteadofSRCPND(SRCPNDwillnotbesetalthoughsomebitsof
EINTPENDareset.).
PowerControlofVDDiandVDDiarm
InSLEEPmode,VDDi,VDDiarm,VDDMPLLand
VDDUPLLwillbeturnedoff,whichiscontrolledbyPWRENpin.IfPWRENsignalisactivated(H),VDDiand
VDDiarmaresuppliedbyanexternalvoltageregulator.IfPWRENpinisinactive
(L),theVDDiandVDDiarmareturnedoff.图7-10描述了从睡眠模式唤醒的过程。
1.如果发出一个唤醒源,内部重置信号将会被置位
2.检查GSTATUS2[2]的状态,检查电源上电是否从
睡眠模式下唤醒导致的
3.通过设置MISCCR[19:
17]为000bit来释放
SDRAM保护信号
4.配置SDRAM内存控制器
5.等待SDRAM自刷新模式被释放。
6.
GSTATUS[3:
4]中的信息可以被用户使用,因为GSTATUS[3:
4]的值在睡眠模式下已经被保护
7.对于外部中断EINT[3:
0],检查待处理中断源寄存器SRCPND.对于外部中断EINT[15:
4],检查待处理外部寄存器EINTPEND
VDDi和VDDiarm的电源控制在睡眠模式下,VDDi,VDDiarm,
VDDMPLL和VDDUPLL将会被关闭,它们是由PWREN引脚控制。
如果PWREN引脚处于高电平,VDDi和VDDiarm由外部电压调节器提供电源。
如果PWREN引脚处于低电平,VDDi和VDDiarm则处于关闭状态。