S3C44B0X时钟电源管理器功能及应用开发曹晨雷振达2006-112内容提要S3C44B0X时钟电源管理器概述S3C44B0X时钟发生器S3C44B0X电源管理器的功能2006-1132006-114S3C44B0X时钟电源管理器概述时钟发生器产生CPU和外设所需要的时钟信号输入晶体(6-20MHz)外部时钟(1-66MHz)输出PLL输出直接输出外部时钟2006-115S3C44B0X时钟电源管理器概述(续)电源管理器提供5种电源管理方案,以保持最佳的功耗正常模式低速模式空闲模式停止模式LCD的SL空闲模式2006-116时钟发生器框图2006-117相关管脚信号类型描述OM[3:2]输入决定时钟产生方式EXTCLK输入外时钟源,不用时接高XTAL0模拟输入晶体输入,不用时接高EXTAL0模拟输出晶体输出,不用时浮空PLLCAP模拟输入接PLL的滤波电容CLKout输出时钟输出2006-118时钟源的选择OM[3:2]的采样时间是在nRESET信号的上升沿.直到用户向PLLCON寄存器中写入有效的设置后PLL的输出才作为MCLK,否则外部时钟信号直接作为MCLK使用2006-119参数描述tRESW时钟稳定后复位保持时间,最小4MCLK周期tMDRH复位结束后模式设置保持时间,最小3ns2006-1110PLL(锁相环)是用于根据输入时钟在频率和相位上产生同步的输出信号的电路为什么要使用PLL?常用的晶体振荡器无法满足电子业日新月异的发展和要求其频率值是单一的,最多只能在很小的频段内进行微调PLL优缺点优点:结构简单,输出频率纯度高,易于得到大量的离散频率缺点:瞬时频率稳定度较差,频率转换时间较长2006-1111PLL原理图相位差检测器(PFD)回环滤波器(LF)压控振荡器(VCO)infvcofvcof2006-1112PLL原理鉴相器检测输入信号和输出信号的相位差,并将检测出的相位差信号转换成电压信号输出回环滤波器是一个低通滤波器,为了避免VCO过载,将鉴相器输出的高频部分和噪声滤掉,输出一个电压来控制VCO改变频率压控振荡器根据输入的电压调整产生的频率并向输入信号的频率靠拢,直至消除频差而锁定2006-1113S3C44B0X的PLL增加了3个分频器P、M和SPUMP(充电泵),对鉴相器的输出信号转换成相应的充电电压2006-1114PLL输出的时钟频率PLL的通用条件2006-1115参考电路2006-1116时钟控制逻辑选择时钟-PLL输出时钟或直接使用外部时钟在PLL输出时钟频率改变时,在输出稳定之前禁止输出在上电复位和从power-down模式中唤醒的时候也起作用2006-1117PLL锁定时间PLL输出稳定所需时间(208us)tlock=(1/fin)*nn=LTIMECNT的值这个值在以下情况由内部逻辑自动插入锁定时间计数寄存器(locktimecountregister)重启(nRESET)从STOP模式唤醒从SL_IDLE模式唤醒2006-11182006-1119电源管理功能:通过软件设置来控制系统时钟,以降低功耗相关部件PLL时钟控制逻辑外设的时钟控制Wake-up信号模式:5种2006-1120正常模式(NORMAL)基本模块正常工作CPUCoreBusControllerMemoryControllerInterruptControllerPowerManagementblock外设正常工作,但可通过软件设置关闭指定外设的时钟(ClockControlRegister-CLKCON)2006-1121空闲模式(IDLE)停止向CPUCore提供时钟BusController、MemoryController、InterruptController、PowerManagementblock仍有时钟进入方式:设置IDLE_BIT=1,有一些的延时退出方式:EINT[7:0]、RTC告警中断或其他中断2006-1122停止模式(STOP)功耗最低,所有模块被停止进入方式:在正常模式或低速模式下设置STOP_BIT=1有一定的延时延迟时间=16个外时钟周期如果在低速模式可直接进入退出方式:外部中断或RTC告警中断;不能直接返回正常模式,要先进入解冻(THAW)模式,直到向CLKCON写入有效的值2006-1123停止模式(续1)2006-1124停止模式(续2)DRAM必须处在自刷新状态(Self-Refresh),以保持数据LCD要停止显示,否则系统会挂起所有的端口要配置好,以减少功耗(如:PCONG)在进入停止模式时必须经过PLL打开的低速模式在进入停止模式的最后三个时钟周期不响应唤醒请求在进入停止模式时,MCLK的频率必须比Fin的2.5倍高在使用电平触发的EINT模式时,进入停止模式时,不能有电平触发的EINT唤醒信号,否则,取消进入停止模式2006-1125LCD的SL空闲模式(SL_IDLE)基本模块中除了LCD控制器都停止功耗比空闲模式低进入方式:只能从关闭PLL的低速模式进入,设置SL_ILDE=1DRAM必须处在自刷新状态退出方式:EINT或RTC告警中断,返回低速模式2006-1126SL_IDLE(续)2006-1127低速模式(SLOW)降低频率以减少功耗,还可以关闭PLL以去掉PLL自身的功耗输出时钟由外时钟分频得到,分频由CLKSLOW中的SLOW_VAL决定。进入方式:正常模式下设置SLOW_BIT=1退出方式:设置SLOW_BIT=0Fout的频率SLOW_VAL的值Fin/(2xSLOW_VAL)SLOW_VAL0FinSLOW_VAL=02006-11282006-1129模式转换状态图2006-1130各种模式下功耗比较各模式下的DC电气特性关闭各IO模块可节省的功耗2006-1131NORMALIDLESLOWSL_IDLESTOP功耗最高高低较低最低基本模块全工作(高频)仅CPU不工作全工作,PLL可选择(低频)仅LCD控制器工作全不工作进入模式SLOW,IDLENORMAL,SLOWNORMAL,IDLE,SL_IDLESLOWNORMAL,SLOW,经PLL-onSLOW进入退出模式SLOW,IDLENORMAL,SLOWNORMAL,IDLE,SL_IDLESLOW经THAW返回NORMAL,SLOW转换途径设置寄存器EINT,RTC,其他中断设置寄存器EINT,RTCEINT,RTC2006-1132其他相关事项进入IDLE模式时,电源管理模块要收到CPU应答才能真正进入PLL仅能在SLOW模式下,通过软件设置打开或关闭在STOP和SL_IDLE模式下,数据总线(D[31:0])处于高阻态,可通过设置PUPC,PUPD或PUPS来减少其上拉电阻的功耗在STOP和SL_IDLE模式下,输出管脚若是低电平,由内部寄生电阻维持状态,若是高电平将不再维持在进入STOP模式后,ADC也必须处在power-down模式下(可通过ADCCON设置)2006-1133相关寄存器寄存器名地址初始值描述PLLCON0x10D800000x38080PLL设置寄存器CLKCON0x10D800040x7FF8时钟设置寄存器CLKSLOW0x10D800080x9低速时钟控制寄存器LOCKTIME0x10D8000C0xFFFPLL锁时计数寄存器2006-1134PLLCON计算公式Fpllo*2s170MHzs越大越好Fin/p要求大于等于1MHz,小于2MHz名称位描述初始值MDIV[19:12]主分频设置0x38PDIV[9:4]前分频设置0x8SDIV[1:0]后分频设置02006-1135CLKCON名称位描述(0=禁止,1=使能)初值IIS[14]控制IIS的时钟1I2C[13]控制I2C的时钟1ADC[12]控制ADC的时钟1RTC[11]控制RTC的时钟1GPIO[10]控制GPIO的时钟1UART1[9]控制UART1的时钟1UART0[8]控制UART0的时钟1BDMA0、1[7]控制BDMA的时钟1LCDC[6]控制LCDC的时钟1SIO[5]控制SIO的时钟1ZDMA0[4]控制ZDMA的时钟1PWMTIMER[3]控制PWMTIMER的时钟1IDLE[2]进入IDLE的设置位0SL_IDLE[1]进入SL_IDLE的设置位0STOP[0]进入STOP的设置位02006-1136CLKSLOW名称位描述初值PLL_OFF[5]PLL控制;0=打开,1=关闭(SLOW_BIT=1有效)0x0SLOW_BIT[4]进入SLOW的设置位;0=不进入,1=进入0x0SLOW_VAL[3:0]SLOW模式下的分频值0x9LOCKTIME名称位描述初值LTIME_CNT[11:0]PLL锁定计数的值0xFFF2006-1137软件举例PLL设置(M,P,S值的计算)进入和退出STOP模式进入和退出SLOW模式2006-1138PLL设置#defineMAX_FVCO(long)(170000000*1.01)voidPLLset(longMclk,longclkXtal){longpow2[]={1,2,4,8};//Svalue:0-3,maxisgoodfor(s=3;s=0;s--){//fvcomustsmallthanMAX_FVCOvaluefvco=Mclk*pow2[s];if(fvcoMAX_FVCO)continue;//Pvalue:0-63,Fin/(p+2)mustin1-2for(p=0;p64;p++){//ifFin/(p+2)=2changetonextpvalueif(Fin/(p+2)=2)continue;//Mvalue:0-255for(m=0;m256;m++){tmpMclk=clkXtal*(m+8)/((p+2)*pow2[s]);if(tmpMclk==Mclk)return;}}}}2006-1139进入STOP模式nopnopnopnop;enterPOWERDNmodeldrr0,=CLKCONstrr2,[r0];waituntilenterSTOPmodeand;untilwake-upldrr0,=0x10subsr0,r0,#1bne%B0;关闭外设和LCD;设置唤醒中断;r0=CLKCON=0x01movr2,r0ldrr0,=REFRESHldrr3,[r0]movr1,r3orrr1,r1,#0x400000;self-refreshenablestrr1,[r0];Waituntilself-refreshisissued.nopnopnop2006-1140从STOP模式返回NORMAL;exitfromDRAM/SDRAMselfrefreshmode.ldrr0,=REFRESHstrr3,[r0];enterTHAWmode,writevaluetoCLKCONto;changetoNORMALmodemovr3,#0x7ff8movr0,=CLKCONstrr3,[r0];TurnonLCD,andreturnoriginalport;configurations2006-1141进入和退出SLOW模式//EnterSlowMode//PLLoff,SLOWmode,SLVAL=5Fout=Fin/(2*SLVAL)=1MHzrCLKSLOW=5|(14)|(15);//changememorycontrolregister(60MHz--1MHz)…...//ExitSlowMode//changememorycontrolregister(1MHz--66MHz)//PLLonrCLKSLOW=2|(14)|(05);//waitduring