s3c2440a 裸奔1之时钟和电源管理篇

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899时钟和电源管理篇一、时钟和电源管理模块组成:1.时钟控制2.USB控制3。电源管理二.时钟控制产生的信号:1。CPU的FCLK2,AHB总线外设的HCLK3。APB总线外设的PCLK三。MCU内部两个锁相环(PLL)作用:1。其中一个提供给包括FCLK,HCLK,PCLK使用2。另外一个专门提供给USB模块(48MHZ)注:提供给USB模块的时钟信号不能轻易改动,否则USB模块不能正常工作,正常工作在48MHZ上四.电源管理模块可以工作在以下四种模式:1。正常模式:此模式提供给CPU时钟以及其他所有外设时钟,功率消耗达到最大,用户软件可以控制外设是否运行,例如实际情况中我们不需要使用定时器或者MCU内部其他的外设功能时,我们可以讲时钟与此外设断开,以达到不让其工作的目的,从而降低了系统的功耗。s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:5138528992。慢速模式:PLL在此模式中不起作用,FCLK直接与外部时钟相关,在此模式下系统的MCU的功耗跟外部时钟有关系,跟PLL没有关系。3。空闲模式:此模式断开MCU内核的时钟FCLK以达到降低MCU内核的目的,但是CPU其他外设的时钟并没有断开,任何中断请求都可以使MCU从空闲模式中唤醒4。睡眠模式:这个模块与内部供电是分离的。因此在此模式中发生了没有因CPU和除唤醒逻辑以外的内部逻辑的功耗。要激活睡眠模式需要两个独立的供电电源。两个电源之一提供电源给唤醒逻辑。另一个提供电源给包括CPU在内的其它内部逻辑,而且应当能够控制供电的开和关。在睡眠模式中,第二个为CPU和内部逻辑供电电源将被关闭。可以由EINT[15:0]或RTC闹铃中断产生从睡眠模式中唤醒。五.时钟源的选择:时钟源靠硬件选择OM[3:2]管腿,MICRO2440两个管腿均接地证明HCLKFCLKPCLK以及USB的时钟均来自外部晶振,以下列出不同配置时钟源不同的列表:s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899六.锁相环(PLL)七.HCLKFCLKPCLKFCLK是提供给ARM920T的时钟。HCLK是提供给用于ARM920T,存储器控制器,中断控制器,LCD控制器,DMA和USB主机模块的AHB总线的时钟PCLK是提供给用于外设如WDT,IIS,I2C,PWM定时器,MMC/SD接口,ADC,UART,GPIO,RTC和SPI的APB总线的时钟八,MCU进入睡眠模式步骤:1.为睡眠模式合理设置GPIO配置。2.屏蔽INTMSK寄存器中所有中断。3.合理配置包括RTC闹钟在内的唤醒源。(不需要屏蔽唤醒源在EINTMASK中的对应位,目的是使得SRCPND或EINTPEND的对应位能置位。然而引发了唤醒源并且屏蔽了EINTMASK的对应位,唤醒也将发生但SRCPND或EINTPEND的对应位将不会被置位。)4.设置USB端口为挂起模式(MISCCR[13:12]=11b)。5.保存一些有特殊含义的值到GSTATUS[4:3]寄存器。这些寄存器在睡眠模式期间是被保护的。6.为数据总线D[31:0]的上拉电阻配置MISCCR[1:0]。如果有的外部总线保持器,例如74LVCH162245,关闭上拉电阻。s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899如果没有开启上拉电阻。另外存储器相关引脚设置为两种类型,另一个是非活动状态。7.清除LCDCON1.ENVID位来停止LCD。8.读取rREFRESH和rCLKCON寄存器以填充TLB。9.设置REFRESH[22]=1b使得SDRAM进入自刷新模式。10.等待直到SDRAM自刷新有效。11.设置MISCCR[19:17]=111b使得SDRAM信号(SCLK0,SCLK1和SCKE)在睡眠模式期间受到保护。12.设置CLKCON寄存器中的睡眠模式位。九.MCU从睡眠模式被唤醒的步骤:1.如果引发了唤醒源之一将发出内部复位信号。它将与触发了外部nRESET引脚的情况相同。此复位持续时间由内部16位控制逻辑和由tRST=(65535/XTAL_频率)计算得到的复位触发时间而决定。2.检查GSTATUS2[2]以了解是否是上电使得从睡眠模式中唤醒。3.设置MISCCR[19:17]=000b释放SDRAM信号保护。4.配置SDRAM存储器控制器。5.等待直到SDRAM自刷新被释放。通常SDRAM需要刷新所有SDRAM行的周期。6.GSTATUS[3:4]中的信息可以用于用户自己的目的,因为在睡眠模式期间GSTATUS[3:4]中的值是被保护的。s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:5138528997.–对于EINT[3:0],检查SRCPND寄存器。–对于EINT[15:4],检查EINTPEND而不是SRCPND(SRCPND将不会被置位尽管EINTPEND的某些位会被置位)。十.时钟和电源管理特殊寄存器解析:1.锁定时间计数寄存器(LOCKTIME)刚设置好PLL时,系统认为这时PLL还没稳定,所以这时不用PLL的时钟,而用外部晶振做时钟,将PLL锁住,过了LOCK---TIME后认为PLL已经稳定了,才使用PLL给系统提供时钟。例如S3c2410手册上给出锁住时间必须大于150us,外部晶振为12M,那么(1/12M)*N150us,其中N为U_LTIME或M_LTIME,N1800,可以设置U_LTIME或和M_LTIME为0xfff,(0xfff=40961800),此时LOCKTIME=0xffffff.(注:实际上直接使用LOCKTIME的复位值全F也没问题时间越长就越稳定也不在乎这点时间,如果对时间要求比较严格可以算一下大致这个数为多少)LOCKTIME[31:16]=USB的UPLL锁定时间LOCKTIME[15:0]=HCLKPCLKFCLK的UPLL锁定时间2.PLL的控制寄存器(MPLLCON和UPLLCON)MDIV[19:12]=主分频器控制简称MPDIV[9:4]=预分频器控制简称PSDIV[1:0]=后分频器控制简称Ss3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899M/P/S的具体设置数值推荐使用下表中的数据,注意UPLLCON必须得到输出频率为48MHZ因为它是提供给USB模块,USB模块只有工作在48MHZ的情况下才能正常工作4.时钟控制寄存器(CLKCON)s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:5138528995.时钟分频控制寄存器(CLKDIVN)6.摄像头时钟分频寄存器(CAMDIVN)s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:5138528997.时钟慢速控制寄存器(CLKSLOW)s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899昨天用了将近一天的时间掌握了时钟和电源管理模块的介绍以及相关寄存器的设置,今天通过编写PLL的初始化程序,然后在添加进跑马灯功能,通过改变HCLKFCLKPCLK等时钟频率观察跑马灯快慢,实验结果令人满意最小工作频率在48MHZ,最大工作频率在500多MHZ,跑马灯快慢节奏变化还是蛮大的,说明试验成功啦哈哈哈哈。以下列出实验代码,工程文件里的若干库文件就不列出来了,只列出USER程序#includedef.h#includeoption.h#include2440addr.h#include2440lib.h#include2440slib.h#includemath.h#includestdio.h#includestring.h/************************************************************HCLKPCLKFCLKUCLK初始化程序**s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899**fclk_choose=1----输入频率12MHZ输出频率48MHZ****=2----输入频率12MHZ输出频率96MHZ****=3----输入频率12MHZ输出频率271.5MHZ****=4----输入频率12MHZ输出频率304MHZ****=5----输入频率12MHZ输出频率405MHZ****=6----输入频率12MHZ输出频率532MHZ****uclk_choose=1----输入频率12MHZ输出频率48MHZ****=2----输入频率12MHZ输出频率96MHZ****=3----输入频率12MHZ输出频率271.5MHZ****=4----输入频率12MHZ输出频率304MHZ****=5----输入频率12MHZ输出频率405MHZ****=6----输入频率12MHZ输出频率532MHZ************************************************************/s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899voidclk_init(unsignedcharfclk_choose,unsignedcharuclk_choose){//unsignedchari=20;rLOCKTIME=0xffffffff;switch(uclk_choose){case1:rUPLLCON=(0x3812)|(0x024)|0x02;break;case2:rUPLLCON=(0x3812)|(0x024)|0x01;break;case3:rUPLLCON=(0xad12)|(0x024)|0x02;break;s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899case4:rUPLLCON=(0x4412)|(0x014)|0x01;break;case5:rUPLLCON=(0x7f12)|(0x024)|0x01;break;case6:rUPLLCON=(0x7d12)|(0x014)|0x01;break;default:rUPLLCON=(0x3812)|(0x024)|0x02;break;}//for(i=20;i=0;i--);switch(fclk_choose)s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899{case1:rMPLLCON=(0x3812)|(0x024)|0x02;break;case2:rMPLLCON=(0x3812)|(0x024)|0x01;break;case3:rMPLLCON=(0xad12)|(0x024)|0x02;break;case4:rMPLLCON=(0x4412)|(0x014)|0x01;break;case5:rMPLLCON=(0x7f12)|(0x024)|0x01;s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899break;case6:rMPLLCON=(0x7d12)|(0x014)|0x01;break;default:rMPLLCON=(0x3812)|(0x024)|0x02;break;}//for(i=20;i=0;i--);rCLKCON=0xfffffff0;//mcu的外围设备时钟基本都开放啦rCLKSLOW=0x00000004;rCLKDIVN=0x00000004;rCAMDIVN=0x0;}voiddely(U32tt)s3c2440a裸奔之时钟和电源管理篇编写:徐斌QQ:513852899{U32i;for(;tt0;tt--){for(i=0;i1

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功