博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

D.A.S

人生需要信仰,需要主义,只要认定了那是值得你追求的,何必在意值还是不值。勿以成败论英雄,人生本是过程,结局从来就不是生命的尺度,因为没人知道那“后来的后来”究竟是什么,唯一确定的是“人生固有一死”,浮萍之身全任流水,前方何处谁能左右,真正拥有的只是“当下”,“当下”有一个愿意为之献身的信仰,哪怕是为一个永远也不存在的“明天”而再也看不到“今天”的日出,此生足矣。
  dongas.cublog.cn

关于作者
	
|| << >> ||
我的分类


ARM9硬件接口学习之四 CLOCK

S3C2410 CPU默认的工作主频为12MHz,使用PLL电路可以产生更高的主频供CPU及外围器件使用。S3C2410有两个PLLMPLLUPLLUPLL专用与USB设备。MPLL用于CPU及其他外围器件。

通过MPLL会产生三个部分的时钟频率:FCLKHCLKPLCKFCLK用于CPU核,HCLK用于AHB总线的设备(比如SDRAM)PCLK用于APB总线的设备(比如UART)。从时钟结构图中可以查看到使用不同时钟频率的硬件。

Figure 7-1. Clock Generator Block Diagram

 

(注:这里要注意从图中看出,Uart使用的是PCLK,后面Uart实验会用到)

 

下面介绍MPLL的启动流程:

(注:下面内容部分直接摘录自《s3c2410完全开发流程》,Clock部分写了非常好)

S3c2410 datasheet 224Figure 7-4. Power-On Reset Sequence展示了上电后MPLL启动的过程

 

 

请跟随FCLK的图像了解启动过程:

1、上电几毫秒后,晶振输出稳定,FCLK=晶振频率,nRESET信号恢复高电平后,

CPU开始执行指令。

2我们可以在程序开头启动MPLL,在设置MPLL的几个寄存器后,需要等待一段时间(Lock Time)MPLL的输出才稳定。在这段时间(Lock Time)内,FCLK停振,CPU停止工作。Lock Time的长短由寄存器LOCKTIME设定。

3Lock Time之后,MPLL输出正常,CPU工作在新的FCLK下。

 

设置S3c2410的时钟频率就是设置MPLL的几个寄存器:

1LOCKTIME:设为0x00ffffff

前面说过,MPLL启动后需要等待一段时间(Lock Time),使得其输出稳定。位[23:12]用于UPLL,位[11:0]用于MPLL使用确省值0x00ffffff即可。

2CLKDIVN:用来设置FCLK:HCLK:PCLK的比例关系,默认为1:1:1

这里值设为0x03,即FCLK:HCLK:PCLK=1:2:4

CLKDIVN不同的设置及对应的时钟比例关系如下图:

 

3MPLLCON:设为(0x5c << 12)|(0x04 << 4)|(0x00),即0x5c0040

对于MPLLCON寄存器,[19:12]MDIV[9:4]PDIV[1:0]SDIV。有如下计算公式:

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

其中: m = MDIV + 8, p = PDIV + 2

Fin 即默认输入的时钟频率12MHzMPLLCON设为0x5c0040,可以计算出FCLK=200MHz,再由CLKDIVN的设置可知:HCLK=100MHzPCLK=50MHz

 

 通常我们将如上时钟初始化的过程写成clock_init函数供其他函数调用,代码如下:

void clock_init(void)

{

        /*init clock*/

rLOCKTIME = 0xFFFFFF;

 

    /*设置FCLK:HCLK:PCLK=1:2:4,这样假设处理器主频为200M,HCLK50M,PCLK25MARM920T内核使用FCLK, 内存控制器,LCD控制器等使用HCLK,看门狗、串口等使用PCLK*/

rCLKDIVN  = 0x3;

 

    /* 设置时钟频率为200M*/

    rMPLLCON = 0x5c0040;

   

}

文件: clock.rar
大小: 0KB
下载: 下载

 

返回ARM9硬件接口学习专题

 

 

发表于: 2008-02-01,修改于: 2008-08-16 16:46,已浏览1724次,有评论0条 推荐 投诉


网友评论
 发表评论