📄 2440_mpll.txt
字号:
此模式下内部电源关闭,因此,CPU和内部逻辑模块都没有电源消耗,除了唤醒模块。激活SLEEP模式需要2个独立的电源,一个支持唤醒模块,一个带电源开关的支持其他模块,包括CPU.在睡眠模式下,只有唤醒模块是工作的,而唤醒睡眠模式需要依靠EINT[15:0]和定时器中RTC(real time control)中断。
依据以下步骤进入到睡眠模式:(****附三星测试代码中的微量代码说明)
1、设置GPIO,满足SLEEP模式的配置。 ******ConfigSleepGPIO();
2、Mask所有中断.进入INTMSK寄存器设置 ******rINTMSK=BIT_ALLMSK;所有中断屏蔽;
3、设置中断唤醒源包括RTC(EINTMASK寄存器的相应BIt位设置唤醒源,不能mask,因为需要让SRCPN--中断请求和EINTPEND--中断状态位 的相应位使能。)
************rEINTMASK = rEINTMASK&~(1<<11); //SRCPND:EINT8_23 will be set by EINT11 after wake-up.
4、设置USB悬置
rMISCCR|=(1<<12); //USB port0 = suspend
rMISCCR|=(1<<13); //USB port1 = suspend
5、GSTATUS[4:3]两个信息寄存器
rGSTATUS3=(U32)StartPointAfterSleepWakeUp;//复位后起始点的地址
6、设置微控制单元寄存器MISCCR[1:0]关闭总线,减少电源消耗,另外内存相关的脚位,如D[31:0]等需要置为高阻或者非活动状态。
********rMISCCR=rMISCCR|(3<<0);
********rMSLCON = (1<<11)|(0<<10)|(0<<9)|(1<<8)|(1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);查看P284寄存器可以看此设置
7、清除LCDCON1.ENVID位来停止LCD。
***************rLCDCON1 =rLCDCON1 & 0x3fffe;
8、读取rREFRESH和rCLKCON寄存器???fill the TLB
9、使能SDRAM进入自刷新模式,相应的寄存器位REFRESH[22]=1b.
10、等待自刷新开始。
11、设置:MISCCR[19:17]=111b使得SDRAM的信号(SCLK0,SCLK1,SCLKE)在睡眠模式期间做保护。
12、进入睡眠模式,可以设置CLKCON的SLEEP的Bit【3】位。
注意:当系统运行在NAND的boot模式启动时,硬件脚设置 EINT[23:21]必须设置为输入脚,作为唤醒Sleep启动时有用。
根据下面过程唤醒SLEEP模式
1、如果有唤醒动作时,内部的复位信号就会动作。这和外部的nReset信号非常相似。reset复位期间由内部的16位计数器逻辑实现,reset复位决断时间可以计算tRST=(65535/XTAL_frequency)
2、核对GSTATUS2[2]来判断是否将由sleep模式唤醒后的电源开启。
3、释放SDRAM的信号保护,通过设置MISCCR[19:17]=000b
4、设置SDRAM内存相关控制
5、等待SDRAM自刷新释放
6、因为使用SLEEP模式下,GSTATUS[3:4]两个寄存器可以保存之前的信息,由用户自由使用
7、EINT[3:0],查看SRCPND寄存器
而EINT[15:4],查看EINTPEND寄存器来确定。
**********仔细看看P223表,关于GPIO的设置
关于VDDi&VDDiarm的电源控制
在睡眠模式下,VDDi,VDDiarm,VDDMPLL以及VDDUPLL会被关闭,使用PWREN脚来控制
*********在硬件设计中,PWREN用来开关CPU以及内部基本逻辑电路的电源开关,如果是设置为高PWREN=1的时候,那么VDDi以及VDDiarm允许电源输入,当PWREN=0时,关闭,可以采用外部硬件强行设置为一直开状态
注意
即使VDDi,VDDiarm,VDDMPLL以及VDDUPLL可能被关闭,部分其他电源脚也可供电。
电源的电压如P224页图所示
硬件设计中,在睡眠模式,如果你不使用触摸屏,4个触摸接口必须悬空,不能接地,在睡眠模式下,XP,YP都是高状态。
唤醒中断信号EINT[15:0]
满足下面条件,就可以将Sleep模式唤醒
a、中断脚的电压跳变。
b、设置GPIO相应的带中断功能的脚位为中断功能。
c、nBATT_FLT脚必须为高电平,这个在设置GPIO控制寄存器设置外部中断时候是非常重要的。
********此脚一般硬件设计时候,外部接一个10K以上的电阻接VDD3.3
当唤醒后,这些中断就不用来唤醒功能了,也就是说可以当作外部中断请求来响应。
Entering IDLE Mode
如果CLKCON[2]设置为1进入空闲模式,经过一段时间延时2440就进入空闲模式
PLL On/OFF
PLL可以在SLOW模式下被关闭,来降低电源功耗,PLL不能在其他模式下关闭,否则MCU不能保证会不出错
PULL-up Resistors on the Data Bus and SLEEP Mode
在睡眠模式,数据总线(D[31:0 ]or D[15:0])可以选择高阻或者输出低状态
数据总线可以打开pull-up寄存器来设置为高阻状态,主要降低电源消耗,可以由MISCCR控制......这部分上面已经有详细说明,偷懒一下了:)
Output Port State and SLEEp mode
输出口的电流消耗,总的来说输出口置高的时候电流消耗是最小的,但是如果输出要低,那么需要通过设置DSC0,DSC1来设置驱动电流,举例如下:
*******rDSC0 = 0x7fffffff;
******rDSC0 &= ~(1<<31); //enable 调节内部的电阻阻值
******rDSC1 = (3<<28)|(3<<26)|(3<24)|(3<<22)|(3<<20)|(3<<18);
Battery Fault Signal(nBATT_FLT)
nBATT_FLT脚有2个功能,如下
1、当CPU不是在SLEEP模式时候(大多数工作时候),此脚将引起中断请求,通过设置BATT_FUNC(MISCCR[22:20])=10xb;中断为高电平触发。
2、当CPU为SLEEP模式时,设置此脚可以禁止唤醒服务,通过设置BATT_FUNC(MISCCR[22:20])=11xb,因此,任何唤醒中断都被mask,保护系统工作在低电池能力下。
ADC Power Down
ADCCON设置 P417
时钟发生器&电源管理特殊寄存器
LOCK TIME COUNT REGISTER(LOCKTIME) pll lock time count register
分为UPLL的锁存时间和MPLL的锁存时间,两个PLL功能所在
MPLL control Register
Mpll= ( 2* m * Fin)/ (p * 2 s)
m=(MDIV + 8), p = (PDIV +2 ), s =SDIV
UPLL control Register
Upll =( m* Fin) /( p * 2 s)
m=(MDIV + 8), p = (PDIV +2 ), s =SDIV
具体的频率选择计算 见 P228的表格
后面是相关的寄存器的具体设置,从P 228- P 231 CLKCON,CLKSLOW,CLKDIVN,CAMDIVN等
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -