Chinaunix首页 | 论坛 | 博客
  • 博客访问: 158364
  • 博文数量: 40
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 355
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-27 18:05
文章分类
文章存档

2011年(1)

2010年(9)

2009年(16)

2008年(14)

我的朋友

分类: LINUX

2009-02-27 15:59:04

S3C2440的datesheet上说,可以达到400M,但是也不是说,必须在400M的频率下工作,主时钟晶振来自于外部晶振(XTIPLL)或者是外部时钟(EXTCLK)。时钟生成器包含了一个振荡器(振荡放大器),其连接外部晶振,并且还有2个PLL,可以产生需要的高频。

通过引脚OM[3:2]来决定时钟源是Crystal还是EXTCLK,不过我用的开发板将OM[3:2]固定接地了,都是用外部晶振。有一点值得注意,在对MPLLCON写入有效值之前,系统使用外部晶振或外部时钟源的时钟。即使用户不准备改变MPLLCON的值,也应当重新写一次。

简单说一下,S3C2440的时钟构成。

S3C2440具有2PLL(Phase Locked Loop:用来产生高频的电路),一个是MPLL, 用于产生FCLK HCLK PCLK三种频率, 这三种频率分别有不同的用途:

FCLKCPU提供的时钟信号,如果提到CPU的主频是400MHz,就是指的这个时钟信号。
    

HCLK是为AHB总线提供的时钟信号, Advanced High-performance Bus,主要用于高速外设,比如内存控制器,中断控制器,LCD控制器, DMA 以及USB host

    

PCLK是为APB总线提供的时钟信号,Advanced Peripherals Bus,主要用于低速外设,比如WATCHDOG,IIS, I2C SDI/MMC, GPIORTC ,UART,PWM,ADC and SPI等等。

 

另外一个是UPLL,专门用于驱动USB host/Device。并且驱动USB host/Device的频率必须为48MHz

在系统复位之后,如果没有设定PLL,则采用外部晶振的频率作为FCLK,同时FCLK:HCLK:PCLK的比例关系为1:1:1。

 

下面说一些跟时钟有关的寄存器设置:通过改变CLKDIVN可以改变FCLK,HCLK,PCLK的分频比。

 

锁定时间计数寄存器LOCKTIME(0x4c000000):一般使用默认就可以。

 

锁相环控制寄存器[MPLLCON(0x4c000004)&UPLLCON(0x4c000008)]:

MPLL=(2*m*Fin)/(p*2^s)    UPLL=(m*Fin)/(p*2^s)

其中m=(MDIV+8),p=(PDIV+2),s=SDIV

P,M范围:1<=P<=62,1<=M<=248

 

注意:MDIV[19:12],PDIV[9:4],SDIV[1:0],当设置MPLL和UPLL值的时候,需要先设置UPLL再设置MPLL。

 

例如:MPLLCON = (92<<12) | (1<<4) |(1);//FCLK=400M

这里MDIV=92,PDIV=1,SDIV=1,那么m=100,p=3,s=1,且Fin=12M,所以FCLK=400M

 

再设置CLKDIVN=0x03;//FCLK:HCLK:PCLK=1:2:4

这里CLKDIVN(0x4c000014)用于决定三者的分配比例

 

一般设置这两个就可以了。还有一个时钟控制寄存器CLKCON(0x4c00000c)向相应位写1使能相应时钟,不过一般默认为1.

 

       mrc p15, 0, r0, c1, c0, 0
        orr r0, r0, #0xc0000000
        mcr p15, 0, r0, c1, c0, 0
@camdivn
        ldr r0, =0x4c000018
        ldr r1, [r0]
        mov r2, #1
        bic r1, r1,  r2, lsl #9
        str r1, [r0]
@clkdivn
        ldr r0, =0x4c000014
        ldr r1, =0x5
        str r1, [r0]
@mpll
        ldr r0, =0x4c000004
        ldr r1, =0x7f021
        str r1, [r0]
设置时钟之前一定要设置arm执行模式为异步。


阅读(1409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~